文章插图
小伙伴们应该收到过银行账单,账单上的金额可能会写成金额大写的形式,比如“您本月的信用卡账单陆万叁仟元整”,那么肯定会需要一个方法将数字转换成这种形式 。
规则不难,但是用代码实现的时候还是会有点小坑,不信的话可以先自己写的试试 。
壹贰叁肆伍陆柒捌玖拾佰仟万亿壹贰叁肆伍陆柒捌玖拾佰仟万亿壹贰叁肆伍陆柒捌玖拾佰仟万亿壹贰叁肆伍陆柒捌玖拾佰仟万亿壹贰叁肆伍陆柒捌玖拾佰仟万亿壹贰叁肆伍陆柒捌玖拾佰仟万亿壹贰叁肆伍陆柒捌玖拾佰仟万亿
下面的代码是将 -999999999999 到 999999999999 的整数转换成金额大写形式,如果还要加上带两位小数的,大家在这个基础上改一下就可以了 。总共四十几行,就不加注释了
文章插图
#encoding=utf-8class 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))
【如何使用python将数字转换成大写金额】
推荐阅读
- 苦丁茶能减肥吗 苦丁茶是如何瘦身的呢
- 如何解决webpack打包文件过大的问题
- Python服务器动态资源请求
- 普洱生茶如何泡,新制普洱生茶
- 桔普洱茶怎么泡,普洱茶怎么泡如何泡出清香普洱茶
- 有没有暖腿的东西 暖腿神器能一直使用吗
- 淘宝优惠券使用规则 淘宝品类购物券怎么用
- 宝贝团营销 淘宝店铺宝贝团营销怎么使用
- 卧室装修瓷砖要如何选择
- 如何挑选舞菇