python数字转换成中文大写_python中如何将货币数字转化成汉字大写金额

defformatCurrency(currencyDigits):'''本函数旨在将数字化的金额(不含千分符)转化为中文的大写金额'''maximum_number=99999999999.99cn_zero="零"cn_one="壹"cn_two="贰"cn_three="叁"cn_four="肆"cn_five="伍"cn_six="陆"cn_seven="柒"cn_eight="捌"cn_nine="玖"cn_ten="拾"cn_hundred="佰"cn_thousand="仟"cn_ten_thousand="万"cn_hundred_million="亿"cn_symbol="人民币"cn_dollar="元"cn_ten_cent="角"cn_cent="分"cn_integer="整"integral=None

decimal=None

outputCharacters=None

parts=None

digits, radices, bigRadices, decimals=None,None,None,None

zeroCount=None

i, p, d=None,None,None

quotient, modulus=None ,None

currencyDigits=str(currencyDigits)if currencyDigits=="":return ""

if float(currencyDigits)>maximum_number:print("转换金额过大!")return ""parts= currencyDigits.split(".")if len(parts)>1:

integral=parts[0]

decimal= parts[1]

decimal=decimal[0:2]if decimal=="0" or decimal=="00":

decimal=""

else:

integral=parts[0]

decimal=""digits=[cn_zero,cn_one,cn_two,cn_three,cn_four,cn_five,cn_six,cn_seven,cn_eight,cn_nine]

radices=["",cn_ten,cn_hundred,cn_thousand]

bigRadices=["",cn_ten_thousand,cn_hundred_million]

decimals=[cn_ten_cent,cn_cent]

outputCharacters= ""

if int(integral)>0:

zeroCount=0for i inrange(len(integral)):

p= len(integral) - i - 1d=integral[i]

quotient= int(p / 4)

modulus= p % 4

if d=="0":

zeroCount+=1

else:if zeroCount>0:

outputCharacters+=digits[0]

zeroCount=0

outputCharacters= outputCharacters+ digits[int(d)] +radices[modulus]if modulus==0 and zeroCount < 4:

outputCharacters=outputCharacters +bigRadices[quotient]

outputCharacters+=cn_dollarif decimal!="":

jiao=decimal[0]if jiao=="":

jiao="0"

try:

fen= decimal[1]except:

fen="0"

if fen=="":

fen="0"

if jiao=="0" and fen=="0":pass

if jiao=="0" and fen !="0":

outputCharacters= outputCharacters + cn_zero + digits[int(fen)] + decimals[1]if jiao !="0" and fen=="0":

outputCharacters=outputCharacters + digits[int(jiao)] +decimals[0]if jiao!="0" and fen !="0":

outputCharacters=outputCharacters + digits[int(jiao)] +decimals[0]

outputCharacters=outputCharacters + digits[int(fen)] + decimals[1]if outputCharacters == "":

outputCharacters= cn_zero +cn_dollarif decimal=="":

outputCharacters= outputCharacters+cn_integer

outputCharacters=outputCharactersreturn outputCharacters

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值