[python]数字金额转换成大写金额
最近开始负责单位的测绘合同草拟和签订,所以打算用python-docx来制作模板,减少自己的工作量。因为合同中有金额的大写内容,所以做了一个转换的函数。
因为行业内几乎签不了上亿的合同,所以函数只能转换到亿以下,如有需要可以自己增加上亿的部分。因为是自用写的非常粗糙,敬请斧正。
# coding=gbk
import 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 = 0while i < len(strPartA):singleNum.append(strPartA[i])i = i+1#将整数部分先压再出,因为可以从后向前处理,好判断位数 tnumChinesePartA = []numChinesePartA = []j = 0bef = '0';if len(strPartA) != 0:while j < len(strPartA) :curr = singleNum.pop()if curr == '0' and bef !='0':tnumChinesePartA.append(dictChinese[0])bef = currif curr != '0':tnumChinesePartA.append(unitChinese[j])tnumChinesePartA.append(dictChinese[int(curr)])bef = currif j == 3:tnumChinesePartA.append(u'萬')bef = '0'j = j+1for 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'圆' +Breturn S
主要的思路是将整数部分和小数部分分开处理,整数部分注意增加’萬’这个单位就可以,小数部分只要分三种情况就行。
因为使用在合同内,所以对书写规范要求不严格,如果有严格书写规范,请注意在萬位那里增加对前后是否同时存在零的判断。
[python]数字金额转换成大写金额相关推荐
- 工具篇——MoneyFormatUtil(用于将人民币小写金额转换成大写金额)
写代码的四点: 1.明确需求.要做什么? 2.分析思路.要怎么做?(1,2,3--) 3.确定步骤.每一个思路要用到哪些语句.方法和对象. 4.代码实现.用具体的语言代码将思路实现出来. 学习新技术的 ...
- Java工具包:小写金额转换成大写金额
源代码如下 package com.jian.stringUtil;/*** 工具类:小写金额转换成大写金额* * @author jianxuanbing* */ @SuppressWarnings ...
- 把数字金额转换成人民币大写[原创]
最近在用这个博客,感觉博客园不错,以前用的是新浪的,感觉这个更好,所以好多东西现在转到这边来了. 下面是一个数字转人民币大写的类,不啰嗦了,下面是代码: 1 /**/ /// <summ ...
- 把数字金额转换成中文大写数字
//把数字金额转换成中文大写数字 function changeNumMoneyToChinese(money) { var cnNums = new Array("零", &qu ...
- PB中小写金额转换成大写金额(发票类型)
PB中小写金额转换成大写金额 //================================================================= // 功能:小写金额转换成大写金额 ...
- 小写金额转换成大写金额的函数
编写一个收费软件时要用到一个小写金额转换成大写金额的函数,我曾在网上找到一个用Powerbuilder写的函数,长达四五十行之巨,后来我自己用DELPHI写了一个函数,寥寥几行代码就搞定: funct ...
- .NET把小写数字金额转换成大写人民币金额的两种算法
第一种方法: 用正则表达式,C#方法如下 usingSystem.Text.RegularExpressions;//首先引入命名空间 private string DaXie ( string m ...
- 【简单易懂】Java字符串应用场景:数字金额转换成大写汉字金额【金额转换】
Java字符串应用场景:数字金额转换成汉字金额 文章目录 Java字符串应用场景:数字金额转换成汉字金额 前言 一.String简单介绍 二.字符串在开发中的应用场景 三.金额转换 3.1解题思路 3 ...
- js和 ts 将大数字金额转换成带单位的数字金额,万,千万,亿,格式化金额数字,格式化成带单位的金额,附ts版代码
js将大数字金额转换成带单位的数字金额,万,千万,亿, 第一个参数是在转换的数字, 第二个参数是返回的格式 不传第二个参数,返回数字和单位分开的,数组格式,传第二个参数后,返回数组和单位的字符串,这样 ...
最新文章
- R语言dplyr包arrage函数排序dataframe实战:单列排序、多列排序、自定义排序
- 通过QML定义对象类型
- Codeforces Round #263 (Div.1) B. Appleman and Tree
- matlab2016b安装
- 阿里3大营销模型:AIPL、FAST、GROW
- ArcGIS勘测定界三调版发布
- android路由器安装wifidog,openwrt下的wifidog安装及web认证界面设置
- Elastic控制查询精准度-minimum_should_match
- JMeter做http接口功能测试
- 【转载】在美国找工作秘籍
- usaco Typo
- Linux驱动开发---杂项设备
- java 创建二维码
- 互联网大厂的年终奖(华为分红400亿,腾讯每人发股票 )
- 2022年苹果二手报价最新
- 第二章:IEEE2030.5官网相关资料介绍
- USB2.0接口CM4_5G mini驱动板搭配广和通FM650在Win11下的测速
- window.print 添加页眉页脚
- 联想LSE存高危漏洞 重装系统也无法消除
- 关于数据仓库的设计!
热门文章
- aee快递查询 在php_GitHub - tekintian/php-EAN-13-barcode at dd639319bbcf215aee728fd37eb9b7d39c8f45dd...
- 欢迎参加MVP主讲的Windows 10开发线上课程
- 最老程序员创业札记:全文检索、数据挖掘、推荐引擎应用7
- matlab压缩包提示无法打开,压缩包打不开怎么办-解决压缩文件无法打开的方法 - 河东软件园...
- 在EXCEL中使用SQL语句查询
- java paint方法调用_Java paint()方法个人理解
- 研究生毕业能赚多少钱?多所大学公布毕业生薪资情况统计
- idea 不识别 ftl 文件
- iOS调用银联安全助手控件支付
- 诺基亚225支持java_诺基亚220