python怎么让数字变成汉字_python中如何将货币数字转化成汉字大写金额

def formatCurrency(currencyDigits):

'''本函数旨在将数字化的金额(不含千分符)转化为中文的大写金额'''

maximum_number=99999999999.99

cn_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 = 0

for i in range(len(integral)):

p = len(integral) - i - 1

d = 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_dollar

if 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_dollar

if decimal=="":

outputCharacters = outputCharacters+ cn_integer

outputCharacters = outputCharacters

return outputCharacters

for currency in [23104214618.134,23423424.22,20012.35,23456.00,104213421.10,1000043.01]:

capital_currency=formatCurrency(currency)

print(str(currency)+":\t"+capital_currency)

23104214618.134: 贰佰叁拾壹亿零肆佰贰拾壹万肆仟陆佰壹拾捌元壹角叁分

23423424.22: 贰仟叁佰肆拾贰万叁仟肆佰贰拾肆元贰角贰分

20012.35: 贰万零壹拾贰元叁角伍分

23456.0: 贰万叁仟肆佰伍拾陆元整

104213421.1: 壹亿零肆佰贰拾壹万叁仟肆佰贰拾壹元壹角

1000043.01: 壹佰万零肆拾叁元零壹分

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值