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: 壹佰万零肆拾叁元零壹分