阿拉伯数字转人民币中文读法

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_41596915/article/details/95254657

例如: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)

猜你喜欢

转载自blog.csdn.net/qq_41596915/article/details/95254657