gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 27 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章python实现人性化显示金额数字实例详解由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

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

方法一:

这里只贴上主要代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 金额人性化
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库 。

安装方法:

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

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 金额人性化,保留二位小数
 
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实现把数字人民币金额转换成大写的脚本程序 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# -*- 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实现人性化显示金额数字内容请搜索我以前的文章或继续浏览下面的相关文章希望大家以后多多支持我! 。

原文链接:https://www.py.cn/jishu/jichu/20229.html 。

最后此篇关于python实现人性化显示金额数字实例详解的文章就讲到这里了,如果你想了解更多关于python实现人性化显示金额数字实例详解的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com