输入一个整数金额,输出汉字表示的大写金额。假设输入的金额数为正整数,且最大为12位数字。
输入格式:
输入一个正整数,表示金额,最大位数为12。
输出格式:
输出汉字表示的大写金额。输出的时候,从第一位数字开始,后面所有的位数都需要输出,包括0(零)。
输入样例:
123456789
输出样例:
壹亿贰仟叁佰肆拾伍万陆仟柒佰捌拾玖圆
输入样例:
987600020000
输出样例:
玖仟捌佰柒拾陆亿零仟零佰零拾贰万零仟零佰零拾零圆
代码实现:
from decimal import Decimal
def num2money_format(change_number):
"""
.转换数字为大写货币格式( format_word.__len__() - 3 + 2位小数 )
change_number 支持 float, int, long, string
"""
format_word = ["圆",
"拾", "佰", "仟", "万",
"拾", "佰", "仟", "亿",
"拾", "佰", "仟", "万",
"拾", "佰", "仟"]
format_word_decimal = ['分', '角']
format_num = {'0': "零", '1': "壹", '2': "贰", '3': "叁", '4': "肆", '5': "伍", '6': "陆", '7': "柒", '8': "捌", '9': "玖"}
res = [] # 存放转换结果
if '.' not in change_number:
# 输入的数字没有'.',为整元,没有角和分
k = len(change_number) - 1
for i in change_number:
res.append(format_num[i])
res.append(format_word[k])
k = k - 1
elif '.' in change_number:
float_2_change_num = Decimal(float(change_number)).quantize(Decimal("0.00"))
depart = str(float_2_change_num).split('.')
# 将四舍五入得到的浮点数整数部分和小数部分拆开,实现操作为:先将浮点数转为字符串类型,再以“.”为分隔符分开
int_part = depart[0] # 整数部分
decimal_part = depart[1] # 小数部分
k = len(int_part) - 1
for i in int_part: # 整数部分转换
res.append(format_num[i])
res.append(format_word[k])
k = k - 1
m = len(decimal_part) - 1
for i in decimal_part: # 小数部分转换
res.append(format_num[i])
res.append(format_word_decimal[m])
m = m - 1
return ''.join(res) # 返回结果
your_money = input()
result = num2money_format(your_money)
print(result)