人民币金额打印

原创 2013年12月06日 12:38:38
#coding:utf-8

#数字大写对应表
bigFormat={'0':u'零','1':u"壹",'2':u"贰",'3':u'叁','4':u'肆','5':u'伍','6':u'陆','7':u'柒','8':u'捌','9':u'玖'}

unit =[u'仟',u'佰',u'拾','']

#测试数据列表
digits=[1987654321,87654321,80014321,80000000,1101234,6000,54321,4321,1021,1002,1100,1206,300,301,11,0,2,9,87654,-807654,-1,-9]

#以中文形式读取四位数据
def getFournum(n):
    if n=='0':
        return u'零'
    r=''

    for i,j in enumerate(str(n)):
        j=bigFormat[j]+unit[i-len(str(n))]
        r+=j
    r=r.replace(u'零仟',u'零')
    r=r.replace(u'零佰',u'零')
    r=r.replace(u'零拾',u'零')
    r=r.replace(u'零零',u'零')
    #r=r.replace(u'壹拾',u'拾') 如果将此句加上,则110读为:壹佰拾,建议去掉该语句
    r=r.rstrip(u'零')

    return r

def result(n,l,elem):
    if n==1:
        r=getFournum(elem)

        return r
    if n==3:
        r= getFournum(elem)+u'亿-' #在亿后面增加一个标示:"-"
        #递归调用result函数,获取 以 "万"结尾的数字
        r+=result(n-1,l,l[1])
        return r
    if n==2:
        r=getFournum(elem)+u'萬-'
        #递归调用result函数,获取末位的4个数字
        r+=result(n-1,l,l[-1])
        return r

#从左至右将数字拆分成4个元素,得到
def getdigitlist(d):
    l=[]
    for i in range(0,len(d),4):
        l.append(d[i:i+4][::-1])
    return l[::-1]

if __name__ == '__main__':

    for digit in digits:
        #flag标示是否是负数,默认0,表示不是负数;flag=-1,代表是负数
        flag = 0
        r=''
        if digit<0:
            digit=abs(digit)
            flag=-1

        elementlist=getdigitlist(str(digit)[::-1])
        print elementlist
        for item in elementlist:
            if flag==-1:
                print u'负'+result(len(elementlist),elementlist,item)+u'圆'
            else:
                print result(len(elementlist),elementlist,item)+u'圆'
            break




Python入门练习0009:人民币金额打印

题目:人民币金额打印银行在打印票据的时候,常常需要将阿拉伯数字表示的人民币金额转换为大写表示,现在请你来完成这样一个程序。 在中文大写方式中,0到10以及100、1000、10000被依次表示为: ...
  • Plosu
  • Plosu
  • 2017年04月08日 10:39
  • 351

C# 人民币金额转大写

using System; namespace DotNet.Utilities { /// /// Rmb 的摘要说明。 /// public class...
  • zuoyefeng1990
  • zuoyefeng1990
  • 2017年04月18日 23:37
  • 242

java实现人民币数字和大写转换

原文地址:http://liuyanzhao.com/2512.html 直接上代码了,下面代码经测试完美。能解决数字中加0的特例 import java.math.BigDecimal; ...
  • LIU_YANZHAO
  • LIU_YANZHAO
  • 2017年03月19日 22:59
  • 1059

JS将人民币小写金额转换为大写

/** 数字金额大写转换(可以处理整数,小数,负数) */ function smalltoBIG(n) { var fraction = ['角', '分']; v...
  • k8080880
  • k8080880
  • 2016年12月07日 12:03
  • 662

java版,实现人民币的大小写转换

前两天看了,一个技术牛人的访谈,讲的非常的精彩。我只记得当中他说,程序员要怎么学习。提了很重要的一点,就是要经常性的写博客,把自己学到的知识,分享出来,这样不仅可以提高自己的能力,还能够让别人看你程序...
  • lanxingfeifei
  • lanxingfeifei
  • 2016年02月01日 14:55
  • 2759

js格式化人民币金额¥999.99

function FormatMoney(s) { if (/[^0-9\.]/.test(s)) return "invalid value"; s ...
  • shujudeliu
  • shujudeliu
  • 2015年10月12日 10:33
  • 1865

js将数字金额转换为大写人民币

今天换算律师打官司金额,用到了小写金额转化为大写汉字的问题,这里把具体思路分析一下 1、首先判断输入数值正负问题,     2、其次有小数点部分需要处理,将数值每次乘以10进行拆分,乘10——%...
  • qq_35240823
  • qq_35240823
  • 2017年11月23日 19:43
  • 162

根据人民币大写规则写的java工具类

需求场景:传入一个数字,把它转成人民币大写。 先看下人民币大写规则: 一、人民币大写金额数字到“元”为止的.在“元”之后.应写“整”(或“正”)字.在“角”之后.可以不写“整”(或“正”)字.大写金额...
  • yunsyz
  • yunsyz
  • 2016年11月10日 17:15
  • 934

C#人民币金额大写转换

人民币金额大小写转换,三行代码 //完善了一下查询到的方法,支持小数,保留2位小数 完善了一下查询到的方法,支持小数,保留2位小数 public string NumGetStr(double Nu...
  • CommandBaby
  • CommandBaby
  • 2015年11月28日 14:00
  • 2861

PHP人民币金额数字转中文大写

下面这段代码放在 公共function里面 function _cny_map_unit($list,$units) { $ul=count($units); $...
  • qq_36103520
  • qq_36103520
  • 2017年04月10日 16:41
  • 249
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:人民币金额打印
举报原因:
原因补充:

(最多只允许输入30个字)