版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
例如:1,1111,1111 壹 亿 壹千壹百壹十壹 万 壹千壹百壹十壹
#一个浮点数转换成人民币读法
#将浮点数分解成整数部分和小数部分的字符串
def divide(num):
#提取浮点数中的整数部分
integer = int(num)
#提取浮点数的小数部分
fraction = round((num - int(num)) * 100)
return (str(integer),str(fraction))
#中文数字
han_list = ["零", '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']
#计量
unit_list = ["十", '百', '千']
#将一个不超过4位数的整数转换成中文写法
def four_to_hanstr(num_str):
result = ""
#i用于遍历num_str
for i in range(len(num_str)):
#将整数字符串的字符转换成int类型
num_temp = int(num_str[i])
#如果位数不为零并且位数不是个位,则需要添加单位(千、百、十)
if i != len(num_str) - 1 and num_temp != 0:
result += han_list[num_temp] + unit_list[len(num_str) - 2 - i]
#位数是0,且不是个位
elif num_temp == 0 and i != len(num_str) - 1:
num_temp_next = int(num_str[i+1])
#位数的下一位不是0
if num_temp_next != 0:
#添加中文数字
result += han_list[num_temp]
#位数是个位
elif i == len(num_str) - 1:
#位数不是0
if num_temp != 0:
#添加中文数字
result += han_list[num_temp]
return result
#万或者亿的单位
def integer_to_hanstr(num_str):
#整数字符串长度
num_len = len(num_str)
#整数字符串长度超过12位
if num_len > 12:
return "这个字符串太长了,无法转换!"
#以亿为单位
elif num_len <= 12 and num_len > 8:
return four_to_hanstr(num_str[: -8]) + "亿" \
+ four_to_hanstr(num_str[-8 : -4]) + "万" \
+ four_to_hanstr(num_str[-4 :])
#以万为单位
elif num_len <= 8 and num_len > 4:
return four_to_hanstr(num_str[-8 : -4]) + "万" + \
four_to_hanstr(num_str[-4 :])
#万以下的单位
else:
return four_to_hanstr(num_str)
#测试过程
num_float = float(input("输入浮点数:"))
integer, fraction = divide(num_float)
han_integer = integer_to_hanstr(integer)
print("整数报数:" + han_integer)
print("小数部分:" + fraction)