python实现人性化显示金额数字实例详解


Posted in Python onSeptember 25, 2020

我们在开发过程中,有时候需要把float,int型等数字作为金额类型数字显示会出现很多问题,比如float会显示成 965868.4599999,int型没有小数位等各种各样的问题。我们需要进行转换显示,才能保证阅读人性化。

方法一:

这里只贴上主要代码:

# 金额人性化
def humanized_amount(self, *args, **kwargs):
    """
    金额人性化,保留二位小数,再进行人性化显示

    compel强制二位,默认True,
    """
    if not CheckData(self.__mark).is_int_or_float:
        return {"code": "0001", "msg": "必须传入数字", "data": None}
    else:
        figure = float(self.__mark)

    # 保留二位小数
    figure = "{:.2f}".format(figure)

    # 人性化显示
    figure = "{:,}".format(float(figure))

    if kwargs.get("compel", True):
        # 进行处理,保留二位小数,如果不足二位补领
        figure_list = figure.split(".")
        if len(figure_list[1]) == 1:
            figure += "0"

    return figure

方法二:利用xToolkit库

安装方法:

pip install xToolkit  -i  http://pypi.douban.com/simple --trusted-host pypi.douban.com

xToolkit库是我自己封装的python内置库的一个扩展库.把python的datetime,string,list,dist,xthread等数据结构进行了功能的扩展。

使用方法比较简单,一行代码即可搞定

# 金额人性化,保留二位小数

xstring.dispose(3.0).humanized_amount(compel=False)
xstring.dispose("3.0").humanized_amount(compel=True)
xstring.dispose(37787841.902).humanized_amount(compel=False)
xstring.dispose("37787841.902").humanized_amount(compel=True)
xstring.dispose(378978989).humanized_amount(compel=False)
xstring.dispose("378978989").humanized_amount(compel=True)

>>3.0
>>3.00
>>37,787,841.9
>>37,787,841.90
>>378,978,989.0
>>378,978,989.00

实例扩展:

用python实现把数字人民币金额转换成大写的脚本程序

# -*- coding: utf-8 -*-
def Num2MoneyFormat( change_number ):
  """
  .转换数字为大写货币格式( format_word.__len__() - 3 + 2位小数 )
  change_number 支持 float, int, long, string
  """
  format_word = ["分", "角", "元",
        "拾","百","千","万",
        "拾","百","千","亿",
        "拾","百","千","万",
        "拾","百","千","兆"]

  format_num = ["零","壹","贰","叁","肆","伍","陆","柒","捌","玖"]
  if type( change_number ) == str:
    # - 如果是字符串,先尝试转换成float或int.
    if '.' in change_number:
      try:  change_number = float( change_number )
      except: raise ValueError, '%s  can\'t change'%change_number
    else:
      try:  change_number = int( change_number )
      except: raise ValueError, '%s  can\'t change'%change_number

  if type( change_number ) == float:
    real_numbers = []
    for i in range( len( format_word ) - 3, -3, -1 ):
      if change_number >= 10 ** i or i < 1:
        real_numbers.append( int( round( change_number/( 10**i ), 2)%10 ) )

  elif isinstance( change_number, (int, long) ):
    real_numbers = [ int( i ) for i in str( change_number ) + '00' ]

  else:
    raise ValueError, '%s  can\'t change'%change_number

  zflag = 0            #标记连续0次数,以删除万字,或适时插入零字
  start = len(real_numbers) - 3
  change_words = []
  for i in range(start, -3, -1): #使i对应实际位数,负数为角分
    if 0 <> real_numbers[start-i] or len(change_words) == 0:
      if zflag:
        change_words.append(format_num[0])
        zflag = 0
      change_words.append( format_num[ real_numbers[ start - i ] ] )
      change_words.append(format_word[i+2])

    elif 0 == i or (0 == i%4 and zflag < 3):  #控制 万/元
      change_words.append(format_word[i+2])
      zflag = 0
    else:
      zflag += 1

  if change_words[-1] not in ( format_word[0], format_word[1]):
    # - 最后两位非"角,分"则补"整"
    change_words.append("整")

  return ''.join(change_words)

print Num2MoneyFormat( 343.45 )

到此这篇关于python实现人性化显示金额数字实例详解的文章就介绍到这了,更多相关python实现人性化显示金额数字内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python 算法 排序实现快速排序
Jun 05 Python
python 类详解及简单实例
Mar 24 Python
Python下使用Scrapy爬取网页内容的实例
May 21 Python
Python函数参数操作详解
Aug 03 Python
Python模拟自动存取款机的查询、存取款、修改密码等操作
Sep 02 Python
Python爬虫学习之翻译小程序
Jul 30 Python
python创建学生管理系统
Nov 22 Python
Python3打包exe代码2种方法实例解析
Feb 17 Python
Python线程协作threading.Condition实现过程解析
Mar 12 Python
Python调用接口合并Excel表代码实例
Mar 31 Python
Python远程方法调用实现过程解析
Jul 28 Python
在Python 中将类对象序列化为JSON
Apr 06 Python
python 绘制正态曲线的示例
Sep 24 #Python
Python爬取网页信息的示例
Sep 24 #Python
详解用python -m http.server搭一个简易的本地局域网
Sep 24 #Python
Python中的None与 NULL(即空字符)的区别详解
Sep 24 #Python
python绘制分布折线图的示例
Sep 24 #Python
PyCharm 2020.1版安装破解注册码永久激活(激活到2089年)
Sep 24 #Python
python 如何调用 dubbo 接口
Sep 24 #Python
You might like
PHP执行zip与rar解压缩方法实现代码
2010/12/05 PHP
php获取汉字首字母的函数
2013/11/07 PHP
详解thinkphp5+swoole实现异步邮件群发(SMTP方式)
2017/10/13 PHP
javascript事件问题
2009/09/05 Javascript
你必须知道的JavaScript 变量命名规则详解
2013/05/07 Javascript
jQuery .tmpl() 用法示例介绍
2014/08/21 Javascript
jQuery实现仿美橙互联两级导航菜单效果完整实例
2015/09/17 Javascript
BootStrap智能表单实战系列(十一)级联下拉的支持
2016/06/13 Javascript
Bootstrap插件全集
2016/07/18 Javascript
javascript显示系统当前时间代码
2016/12/29 Javascript
JS使用正则截取两个字符串之间的字符串实现方法详解
2017/01/06 Javascript
JS利用正则表达式实现简单的密码强弱判断实例
2017/06/16 Javascript
vue-quill-editor富文本编辑器简单使用方法
2018/09/21 Javascript
使用layui+ajax实现简单的菜单权限管理及排序的方法
2019/09/10 Javascript
layui实现图片虚拟路径上传,预览和删除的例子
2019/09/25 Javascript
解决antd日期选择组件,添加value就无法点击下一年和下一月问题
2020/10/29 Javascript
基于python的七种经典排序算法(推荐)
2016/12/08 Python
Python supervisor强大的进程管理工具的使用
2019/04/24 Python
python实现五子棋人机对战游戏
2020/03/25 Python
Python使用matplotlib 模块scatter方法画散点图示例
2019/09/27 Python
python爬取王者荣耀全皮肤的简单实现代码
2020/01/31 Python
python3中编码获取网页的实例方法
2020/11/16 Python
如何利用Python写个坦克大战
2020/11/18 Python
Canvas环形饼图与手势控制的实现代码
2019/11/08 HTML / CSS
Lampegiganten丹麦:欧洲领先的照明网上商店
2018/04/25 全球购物
英文版银行求职信
2013/10/09 职场文书
采购主管的岗位职责
2013/12/17 职场文书
教学评估实施方案
2014/03/16 职场文书
企业环保标语
2014/06/10 职场文书
社区服务活动报告
2015/02/05 职场文书
关于做家务的心得体会
2016/01/23 职场文书
将Python代码打包成.exe可执行文件的完整步骤
2021/05/12 Python
2021年最新用于图像处理的Python库总结
2021/06/15 Python
阿里云服务器部署mongodb的详细过程
2021/09/04 MongoDB
Python实现学生管理系统并生成exe可执行文件详解流程
2022/01/22 Python
微信小程序实现轮播图指示器
2022/06/25 Javascript