# -*- coding: gbk -*-
#-------------------------------------------------------------------------------
# Name: rmb.py
# Purpose: 人名币小写转大写,整数部分处理到万亿,小数部分只处理2位
# Author: pushad
#
# Created: 28-11-2009
# Copyright: (c) baby 2009
# Licence: <your licence>
#-------------------------------------------------------------------------------
#!/usr/bin/env python
Number = ["零","壹","贰","叁","肆","伍","陆","柒","捌","玖"]
Other = ["元","角","分","整"]
zi = ["拾","佰","千","万","亿"]
dw = ["元","万","亿"]
def main(inum):
rmb = int(inum)
xs = round(inum - int(inum),2)
rmbc = []
#处理小数部分只处理到2位小数,不进行四舍五入
xs = int(xs * 100)
if xs != 0:
if xs == 10:
rmbc.append(Number[xs/10] + Other[1])
elif xs < 10:
rmbc.append(Number[xs] + Other[2])
elif xs > 10:
if xs%10:
rmbc.append(Number[xs%10] + Other[2])
rmbc.append(Number[xs/10] + Other[1])
#无小数末尾添加‘整’,有小数添加小数描述
if xs > 0:
rmbc.append(Number[0])
else:
rmbc.append(Other[3])
#处理整数部分
#数字位数
bit = 1
#零标志位 用以添加 '0'
zf = 0
#万位标志
bitw = 0
#亿位标志
bity = 0
while rmb:
if bit % 5 == 0:
bitw = 0
if bit % 9 == 0:
bity = 0
if rmb%10:
#亿位处理 大于9位,遇到第一个非0数字添加'亿'
if bit >= 9 and bity == 0:
bity = 1
rmbc.append(dw[2])
#万处位理万 大于5位,遇到第一个非0数字添加'万',(9到12位之间单位为'亿')
if bit >= 5 and (not 9 <= bit <= 12) and bitw == 0:
bitw = 1
rmbc.append(dw[1])
if (bit - 1) % 4 == 0:#个位
rmbc.append(Number[rmb%10])
elif (bit - 2) % 4 == 0:#十位
rmbc.append(Number[rmb%10] + zi[0])
elif (bit - 3) % 4 == 0:#百位
rmbc.append(Number[rmb%10] + zi[1])
elif (bit - 4) % 4 == 0:#千位
rmbc.append(Number[rmb%10] + zi[2])
zf = 0
else:
#当前位为0,如果上一位不为0,则添加'零'
if bit != 1 and zf == 0:
rmbc.append(Number[0])
zf = 1
#从低位开始取数
rmb = rmb / 10
bit = bit + 1
#处理后翻转列表
rmbc.reverse()
return rmbc
if __name__ == '__main__':
#100,0000,0000
test = [10,100,1000,10000,1010]
test2 = [10001000.1,10010000.01,10200000,10200200,10000001]
test3 = [10000,100000,110000,1000000,1010000,1100000,1110000,10000000,10010000,10100000,11000000]
test4 = [10000,100000,110000,1000000,1010000,1100000,1110000,23123000360234]
test5 = [10000100010000.12,11111111.10,1000000000,10000000000,10100000000,23123000360234,23000000000000,1000100000000]
for num in test2:
rmbc = main(num)
str = ''
for i in rmbc:
str = str + i
print num,":",str.decode('gbk')
分享到:
相关推荐
android安卓人民币小写转大写程序APK,可下载到手机安装,以后写人民币大写就很方便啦
人民币小写转大写的程序.rar
人民币小写转大写,符合财务规则,1、汉字大写数字金额如零、壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万、亿等,一律用正楷或者行书体书写,不得用0、一、二、三、四、五、六、七、八、九、十等简化字代替...
人民币小写转大写JAVA程序
可以实现将 10002 转换成壹万零貮元整 10100021转换成壹千零壹拾万零貮拾壹元整 110.00 转换成壹佰壹拾元整 10.01 转换成壹拾元零壹分
为方便进行打印票据中的人民币大写,把网上的一段代码装在VCL中,并加入负数处理.其实就是一个函数VCL.在程序中可以这样用edit2.Text:=RMB1.GetBigStr(StrToFloat(edit1.text));或者这样RMB1.small:=StrToFloat(edit1....
用c sharp写的关于人民币小写转换为大写的控制台程序。仅供参考……
用c语言写的人民币小写金额转换成大写金额
可以实现高到垓位低到毫的 人民币金额小写转大写 C#完整的程序。
C语言成序设计__实现人民币小写金额与大写金额的转换
本程序可以实现人民币小写到大写的转换,可复用性强,稍微做修改即可使用,方便、快捷!
人民币数字转换成汉字大写 android Java 运行效率
一个不错的人民币小写转大写的程序,方便显示和打印。
{用Delphi编写人民币大小写转换程序在财务管理系统中,有时需要打印大写人民币数字,于是笔者编写了以下一些函数使这一需要得以满足,现介绍如下:注:copy(2005-Jey-QQ:344430663)本程序在Delphi7、Winwin2000下调...
在与财务相关的应用中,经常会用到人民币金额的大写,比如发票的打印 程序。本题的任务是:从键盘输入一个十亿以内的正整数( int 类型),把它转换 为人民币金额大写(不考虑用户输入错误的情况)。
我的工作经常需要实现这个功能,以往需要手工转换,过去也找过一些小程序进行转换,不过在小程序中显示好好的字符拷进excel中竟成了乱码,现在有了这个公式,不用自己设置函数,直接拷贝+替换就完成。很棒! 在...
Java中关于金额小写转换为大写的工具类
RMB发音PB程序 可以直接阅读大写或小写人民币值
.NET人民币大小写转换,根据人民币小写转换为人民币大写
有需要将小写的人民币转换成大写的,,可以下载来看看!!!