最近开始负责单位的测绘合同草拟和签订,所以打算用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]数字金额转换成大写金额相关推荐

  1. 工具篇——MoneyFormatUtil(用于将人民币小写金额转换成大写金额)

    写代码的四点: 1.明确需求.要做什么? 2.分析思路.要怎么做?(1,2,3--) 3.确定步骤.每一个思路要用到哪些语句.方法和对象. 4.代码实现.用具体的语言代码将思路实现出来. 学习新技术的 ...

  2. Java工具包:小写金额转换成大写金额

    源代码如下 package com.jian.stringUtil;/*** 工具类:小写金额转换成大写金额* * @author jianxuanbing* */ @SuppressWarnings ...

  3. 把数字金额转换成人民币大写[原创]

    最近在用这个博客,感觉博客园不错,以前用的是新浪的,感觉这个更好,所以好多东西现在转到这边来了. 下面是一个数字转人民币大写的类,不啰嗦了,下面是代码:  1    /**/ /// <summ ...

  4. 把数字金额转换成中文大写数字

    //把数字金额转换成中文大写数字 function changeNumMoneyToChinese(money) { var cnNums = new Array("零", &qu ...

  5. PB中小写金额转换成大写金额(发票类型)

    PB中小写金额转换成大写金额 //================================================================= // 功能:小写金额转换成大写金额 ...

  6. 小写金额转换成大写金额的函数

    编写一个收费软件时要用到一个小写金额转换成大写金额的函数,我曾在网上找到一个用Powerbuilder写的函数,长达四五十行之巨,后来我自己用DELPHI写了一个函数,寥寥几行代码就搞定: funct ...

  7. .NET把小写数字金额转换成大写人民币金额的两种算法

    第一种方法: 用正则表达式,C#方法如下 usingSystem.Text.RegularExpressions;//首先引入命名空间 private string DaXie ( string  m ...

  8. 【简单易懂】Java字符串应用场景:数字金额转换成大写汉字金额【金额转换】

    Java字符串应用场景:数字金额转换成汉字金额 文章目录 Java字符串应用场景:数字金额转换成汉字金额 前言 一.String简单介绍 二.字符串在开发中的应用场景 三.金额转换 3.1解题思路 3 ...

  9. js和 ts 将大数字金额转换成带单位的数字金额,万,千万,亿,格式化金额数字,格式化成带单位的金额,附ts版代码

    js将大数字金额转换成带单位的数字金额,万,千万,亿, 第一个参数是在转换的数字, 第二个参数是返回的格式 不传第二个参数,返回数字和单位分开的,数组格式,传第二个参数后,返回数组和单位的字符串,这样 ...

最新文章

  1. R语言dplyr包arrage函数排序dataframe实战:单列排序、多列排序、自定义排序
  2. 通过QML定义对象类型
  3. Codeforces Round #263 (Div.1) B. Appleman and Tree
  4. matlab2016b安装
  5. 阿里3大营销模型:AIPL、FAST、GROW
  6. ArcGIS勘测定界三调版发布
  7. android路由器安装wifidog,openwrt下的wifidog安装及web认证界面设置
  8. Elastic控制查询精准度-minimum_should_match
  9. JMeter做http接口功能测试
  10. 【转载】在美国找工作秘籍
  11. usaco Typo
  12. Linux驱动开发---杂项设备
  13. java 创建二维码
  14. 互联网大厂的年终奖(华为分红400亿,腾讯每人发股票 )
  15. 2022年苹果二手报价最新
  16. 第二章:IEEE2030.5官网相关资料介绍
  17. USB2.0接口CM4_5G mini驱动板搭配广和通FM650在Win11下的测速
  18. window.print 添加页眉页脚
  19. 联想LSE存高危漏洞 重装系统也无法消除
  20. 关于数据仓库的设计!

热门文章

  1. aee快递查询 在php_GitHub - tekintian/php-EAN-13-barcode at dd639319bbcf215aee728fd37eb9b7d39c8f45dd...
  2. 欢迎参加MVP主讲的Windows 10开发线上课程
  3. 最老程序员创业札记:全文检索、数据挖掘、推荐引擎应用7
  4. matlab压缩包提示无法打开,压缩包打不开怎么办-解决压缩文件无法打开的方法 - 河东软件园...
  5. 在EXCEL中使用SQL语句查询
  6. java paint方法调用_Java paint()方法个人理解
  7. 研究生毕业能赚多少钱?多所大学公布毕业生薪资情况统计
  8. idea 不识别 ftl 文件
  9. iOS调用银联安全助手控件支付
  10. 诺基亚225支持java_诺基亚220