如何使用python将数字转换成大写金额

如何使用python将数字转换成大写金额

游戏|数码彩彩2024-03-10 7:40:19491A+A-
如何使用python将数字转换成大写金额

 

 

小伙伴们应该收到过银行账单,账单上的金额可能会写成金额大写的形式,比如“您本月的信用卡账单陆万叁仟元整”,那么肯定会需要一个方法将数字转换成这种形式。

规则不难,但是用代码实现的时候还是会有点小坑,不信的话可以先自己写的试试。

壹贰叁肆伍陆柒捌玖拾佰仟万亿壹贰叁肆伍陆柒捌玖拾佰仟万亿壹贰叁肆伍陆柒捌玖拾佰仟万亿壹贰叁肆伍陆柒捌玖拾佰仟万亿壹贰叁肆伍陆柒捌玖拾佰仟万亿壹贰叁肆伍陆柒捌玖拾佰仟万亿壹贰叁肆伍陆柒捌玖拾佰仟万亿

下面的代码是将 -999999999999 到 999999999999 的整数转换成金额大写形式,如果还要加上带两位小数的,大家在这个基础上改一下就可以了。总共四十几行,就不加注释了

如何使用python将数字转换成大写金额

 

#encoding=utf-8
class Num2Chinese:
 def __init__(self):
 self.ch = ['零','壹','贰','叁','肆','伍','陆','柒','捌','玖']
 self.unit0 = ['仟','佰','拾','']
 self.unit1 = ['亿','万','']
 # 不大于10000的数
 def convertFor0000(self,num):
 tmp = ('0000' + str(num))[-4:]
 if tmp=='0000':
 return '零'
 else:
 tmpCh = ''
 for i in range(4):
 tmpCh += self.ch[int(tmp[i])] + self.unit0[i]
 tmpCh = tmpCh.replace("零仟","零").replace("零佰","零").replace("零拾","零")
 tmpCh = tmpCh.replace("零零零零","零").replace("零零零", "零").replace("零零", "零")
 if tmpCh.endswith('零'):
 tmpCh = tmpCh[0:-1]
 return tmpCh
 def convert(self,num):
 if num>0 and num <= 999999999999:
 tmp = ('000000000000' + str(num))[-12:]
 tmpCh = ''
 for i in range(0, 12, 4):
 numStr = tmp[i:i + 4]
 tmpCh += self.convertFor0000(numStr) + self.unit1[i // 4]
 tmpCh = tmpCh.replace("零亿", "零").replace("零万", "零")
 tmpCh = tmpCh.replace("零零零零", "零").replace("零零零", "零").replace("零零", "零")
 if tmpCh.startswith('零'):
 tmpCh = tmpCh[1:]
 if tmpCh.endswith('零'):
 tmpCh = tmpCh[0:-1]
 # if tmpCh.startswith('一十'):
 # tmpCh = tmpCh[1:]
 return tmpCh
 elif num<0 and num >= -999999999999:
 return '负' + self.convert(0-num)
 elif num == 0:
 return '零'
 elif num>999999999999 or num<-999999999999:
 return '超出范围'
 else:
 return '未知'
if __name__=='__main__':
 print(Num2Chinese().convert(100108500010))
点击这里复制本文地址 版权声明:本文内容由网友提供,该文观点仅代表作者本人。本站(https://www.angyang.net.cn)仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

昂扬百科 © All Rights Reserved.  渝ICP备2023000803号-3网赚杂谈