hao同学的技术博客

  • 首页
  • Java
    • Java
    • JVM教程
    • Java面试
    • Java并发入门
    • Java并发进阶
  • 项目
    • 从零打造项目
  • Python
    • Python
    • Python爬虫
    • 算法
  • Java框架
    • Spring
    • SpringBoot
  • 前端
    • Angular
  • 其他
    • Linux
    • SQL
  • 随笔
分享技术,记录人生
一个痴迷于技术的厨艺爱好者
  1. 首页
  2. 算法
  3. 正文

Python实现人民币数字转汉字大写金额

2022年5月20日 355点热度 0人点赞 0条评论

Python实现人民币数字转汉字大写金额插图

背景

银行在打印票据的时候,常常需要将阿拉伯数字表示的人民币金额转换为大写表示,现在请你来完成这样一个程序。

在中文大写方式中,0到10以及100、1000、10000被依次表示为: 零 壹 贰 叁 肆 伍 陆 柒 捌 玖 拾 佰 仟 万

以下的例子示范了阿拉伯数字到人民币大写的转换规则:

1 壹圆

11 壹拾壹圆

111 壹佰壹拾壹圆

101 壹佰零壹圆

给一个数字,不超过两位小数,其中整数部分(a<100000000)。

代码部分

def money_en_to_cn():
    '''
    此方法对各种数据验证都通过
    :return:
    '''
    # money_en  = 12345678
    # money_en  = 10100010
    # money_en  = 10101010
    # money_en  = 10100110
    # money_en  = 10100101
    money_en = 1010101.20
    num_list = [{'0': '零', '1': '壹', '2': '贰', '3': '叁', '4': '肆', '5': '伍', '6': '陆', '7': '柒', '8': '捌', '9': '玖'},
                '拾', '佰', '仟', '万']

    decimal_list = ['角','分']

    def func(b):
        ns = ''
        for x in range(1, len(b)):
            num = num_list[0][b[x]]
            word = num + (num_list[x] if b[x]!='0' else '')
            ns = word + ns

        return ns + (num_list[0][b[0]] if b[0] != '0' else '')

    NUM_LINE = 10000
    money_cn = ''
    if money_en == 0:
        return '零圆'

    aa = copy.copy(int(money_en))
    unit = '圆'
    while aa % NUM_LINE:
        b = str(aa % NUM_LINE)[::-1]
        if len(str(aa)) > 4 and len(str(b)) != 4:
            b = b + '0'
        money_cn = func(b) + unit + money_cn
        aa = aa // NUM_LINE
        unit = '万' if aa else '圆'


    if isinstance(money_en,float):
        ab = round(money_en,2)
        ab = str(ab).split('.')[1]
        for x in range(0, len(ab)):
            num = num_list[0][ab[x]]
            word = num + (decimal_list[x] if ab[x] != '0' else '')
            money_cn += word

    return money_cn

输出结果为:

壹佰零壹万零壹佰零壹圆贰角
本作品采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可
标签: Python 算法
最后更新:2022年5月20日

hresh

这是一个专注于IT技术学习交流的个人技术博客网站,包括Java学习、Python爬虫、Web开发实践等领域,深耕Java领域,内容涵盖Java基础、Java并发编程、Java虚拟机、Java面试等核心知识点。

点赞
< 上一篇
下一篇 >

文章评论

取消回复

hresh

这是一个专注于IT技术学习交流的个人技术博客网站,包括Java学习、Python爬虫、Web开发实践等领域,深耕Java领域,内容涵盖Java基础、Java并发编程、Java虚拟机、Java面试等核心知识点。

文章目录
  • 背景
  • 代码部分
最新 热点 随机
最新 热点 随机
后端必知:遵循Google Java规范并引入checkstyle检查 Spring Security结合Redis实现缓存功能 Spring Security结合JWT实现认证与授权 Spring Security自定义认证逻辑实现图片验证码登录 Spring Security进阶学习 Spring Security入门学习
Java面试准备之Spring框架系列一 rollback-only异常令我对事务有了新的认识 SpringBoot结合Quartz实现定时任务 Spring IoC资源管理之ResourceLoader Spring IoC之存储对象BeanDefinition Spring自定义标签的实现

COPYRIGHT © 2022 hao同学的技术博客. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

鄂ICP备2022007381号

鄂公网安备 42010302002449号