使用Python编写程序:数字转换人民币读法

该博客介绍了一个用于将浮点数转换为中文人民币读法的程序。首先,通过`divide`函数将数字分为整数和小数部分,然后分别使用`integer_to_str`和`fraction_to_str`函数将整数和小数转换为汉字表示,同时添加相应的货币单位。程序处理了整数部分超过一定长度的情况,并提供了测试示例。
摘要由CSDN通过智能技术生成
"""
数字转人民币读法
"""


def divide(number):
    """
    将浮点数分成整数部分和小数部分
    :param number: 输入的浮点数
    :return: 元组(分解后的整数和小数)
    """
    integer_divide = int(number)
    fraction_divide = round((number - integer_divide) * 100)
    return str(integer_divide), str(fraction_divide)


han_list = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']
unit_list = ['拾', '佰', '仟']


def four_to_han(num_str):
    """
    将数字字符串变成汉字字符串,并为它们添加单位
    :param num_str: 数字字符串
    :return: 汉字字符串
    """
    result = ""
    num_len = len(num_str)
    for i in range(num_len):
        number = int(num_str[i])
        if i != num_len - 1 and number != 0:
            result += han_list[number] + unit_list[num_len - 2 - i]
        elif i != 0 and number == 0 and int(num_str[i + 1]) == 0:
            pass
        else:
            result += han_list[number]
    return result


def integer_to_str(num_str):
    """
    整数部分的转换
    :param num_str: 浮点数的整数部分
    :return: 翻译成汉字读法的整数
    """
    str_len = len(num_str)
    result = ""
    if str_len > 12:
        print("数字太大,无法翻译")
        return
    elif str_len > 8:
        result += four_to_han(num_str[:-8]) + '亿' + four_to_han(num_str[-8:-4]) + '万' + \
                  four_to_han(num_str[-4:]) + '元'
        return result
    elif str_len > 4:
        result += four_to_han(num_str[:-4]) + '万' + \
                  four_to_han(num_str[-4:]) + '元'
        return result
    else:
        return four_to_han(num_str) + '元'


def fraction_to_str(num_str):
    """
    小数部分的转换
    :param num_str: 浮点数的小数部分
    :return: 转换为汉字的小数
    """
    num1 = int(num_str[0])
    num2 = int(num_str[1])
    result = han_list[num1] + '角' + han_list[num2] + '分'
    return result


num = float(input("请输入一个浮点数:"))
# 测试把浮点数分成整数部分和小数部分
integer, fraction = divide(num)
integer_str = integer_to_str(integer)
fraction_str = fraction_to_str(fraction)
print("转换结果:", integer_str + fraction_str)

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程届的星星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值