[python]数字金额转换成大写金额
来源:互联网 发布:卓大王yeile知乎 编辑:程序博客网 时间:2024/04/30 23:26
最近开始负责单位的测绘合同草拟和签订,所以打算用python-docx来制作模板,减少自己的工作量。因为合同中有金额的大写内容,所以做了一个转换的函数。
因为行业内几乎签不了上亿的合同,所以函数只能转换到亿以下,如有需要可以自己增加上亿的部分。因为是自用写的非常粗糙,敬请斧正。
# coding=gbkimport mathdef convertNumToChinese(totalPrice): dictChinese = [u'零',u'壹',u'贰',u'叁',u'肆',u'伍',u'陆',u'柒',u'捌',u'玖'] unitChinese = [u'',u'拾',u'佰',u'仟','',u'拾',u'佰',u'仟'] #将整数部分和小数部分区分开 partA = int(math.floor(totalPrice)) partB = round(totalPrice-partA, 2) strPartA = str(partA) strPartB = '' if partB != 0: strPartB = str(partB)[2:] singleNum = [] if len(strPartA) != 0: i = 0 while i < len(strPartA): singleNum.append(strPartA[i]) i = i+1 #将整数部分先压再出,因为可以从后向前处理,好判断位数 tnumChinesePartA = [] numChinesePartA = [] j = 0 bef = '0'; if len(strPartA) != 0: while j < len(strPartA) : curr = singleNum.pop() if curr == '0' and bef !='0': tnumChinesePartA.append(dictChinese[0]) bef = curr if curr != '0': tnumChinesePartA.append(unitChinese[j]) tnumChinesePartA.append(dictChinese[int(curr)]) bef = curr if j == 3: tnumChinesePartA.append(u'萬') bef = '0' j = j+1 for i in range(len(tnumChinesePartA)): numChinesePartA.append(tnumChinesePartA.pop()) A = '' for i in numChinesePartA: A = A+i #小数部分很简单,只要判断下角是否为零 B = '' if len(strPartB) == 1: B = dictChinese[int(strPartB[0])] + u'角' if len(strPartB) == 2 and strPartB[0] != '0': B = dictChinese[int(strPartB[0])] + u'角' + dictChinese[int(strPartB[1])] + u'分' if len(strPartB) == 2 and strPartB[0] == '0': B = dictChinese[int(strPartB[0])] + dictChinese[int(strPartB[1])] + u'分' if len(strPartB) == 0: S = A + u'圆整' if len(strPartB)!= 0: S = A + u'圆' +B return S
主要的思路是将整数部分和小数部分分开处理,整数部分注意增加’萬’这个单位就可以,小数部分只要分三种情况就行。
因为使用在合同内,所以对书写规范要求不严格,如果有严格书写规范,请注意在萬位那里增加对前后是否同时存在零的判断。
阅读全文
0 0
- [python]数字金额转换成大写金额
- 数字金额转换成大写金额
- 将数字金额转换成大写金额
- 数字转换成大写金额
- 数字金额转换成大写
- 数字转换成大写金额
- 数字转换成大写金额
- 数字转换成大写金额
- 数字转换成大写金额
- 数字金额转换大写
- 数字金额大写转换
- 数字金额大写转换
- 使用 JAVA 将数字金额转换成大写中文金额
- PHP 数字金额转换成中文大写金额的函数
- java实现数字金额转换成汉字大写金额
- C#数字金额转换大写金额
- Java数字金额转换为大写金额
- 将数字转换成大写金额
- dubbo+spring实例搭建
- 适配器
- 程序设计C 实验三 题目二 距阵相乘(0074)
- Android打包提速实践
- Docker技术及其使用
- [python]数字金额转换成大写金额
- Linux 上使用svnprintf 函数时函数返回值
- Ionic 侧边栏菜单的简单实现
- Java BigDecimal
- 实现 Trie-LintCode
- 自己动手,丰衣足食!Python3网络爬虫实战案例
- 类和对象
- Java 中 String equals与==的区别
- 国内常用NTP服务器地址及IP