博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用python实现把数字人民币金额转换成大写的脚本程序
阅读量:6075 次
发布时间:2019-06-20

本文共 2066 字,大约阅读时间需要 6 分钟。

# -*- coding: utf-8 -*-def Num2MoneyFormat( change_number ):    """    .转换数字为大写货币格式( format_word.__len__() - 3 + 2位小数 )    change_number 支持 float, int, long, string    """    format_word = ["分", "角", "元",               "拾","百","千","万",               "拾","百","千","亿",               "拾","百","千","万",               "拾","百","千","兆"]    format_num = ["零","壹","贰","叁","肆","伍","陆","柒","捌","玖"]    if type( change_number ) == str:        # - 如果是字符串,先尝试转换成float或int.        if '.' in change_number:            try:    change_number = float( change_number )            except: raise ValueError, '%s   can\'t change'%change_number        else:            try:    change_number = int( change_number )            except: raise ValueError, '%s   can\'t change'%change_number    if type( change_number ) == float:        real_numbers = []        for i in range( len( format_word ) - 3, -3, -1 ):            if change_number >= 10 ** i or i < 1:                real_numbers.append( int( round( change_number/( 10**i ), 2)%10 ) )    elif isinstance( change_number, (int, long) ):        real_numbers = [ int( i ) for i in str( change_number ) + '00' ]    else:        raise ValueError, '%s   can\'t change'%change_number    zflag = 0                       #标记连续0次数,以删除万字,或适时插入零字    start = len(real_numbers) - 3    change_words = []    for i in range(start, -3, -1):  #使i对应实际位数,负数为角分        if 0 <> real_numbers[start-i] or len(change_words) == 0:            if zflag:                change_words.append(format_num[0])                zflag = 0            change_words.append( format_num[ real_numbers[ start - i ] ] )            change_words.append(format_word[i+2])        elif 0 == i or (0 == i%4 and zflag < 3):    #控制 万/元            change_words.append(format_word[i+2])            zflag = 0        else:            zflag += 1    if change_words[-1] not in ( format_word[0], format_word[1]):        # - 最后两位非"角,分"则补"整"        change_words.append("整")    return ''.join(change_words)print Num2MoneyFormat( 343.45 )

运行结果:叁百肆拾叁元肆角伍分

转载于:https://www.cnblogs.com/hltswd/p/5419319.html

你可能感兴趣的文章
php-cgi耗尽报502错误
查看>>
linux下Postgresql-9.2安装及数据库的创建过程
查看>>
你准备好防御下一次网络攻击了吗?
查看>>
Apache ActiveMQ实战(2)-集群
查看>>
QT4.8.5+qt-vs-addin-1.1.11+VS2010安装配置和QT工程的新建和加载
查看>>
jQuery基础
查看>>
Python_List对象内置方法详解
查看>>
是不是有经验的JavaEE开发者,看你json玩的6不6(上)
查看>>
36句经典英文格言
查看>>
Android AndroidStudio 详解Kotlin的安装和使用(附下载demo)
查看>>
从MySQL到Redis,提升数据迁移的效率
查看>>
SaaS模式金融危机时期显威力 呼叫中心进入云时代
查看>>
发力端到端 Nutanix着力大数据分析领域
查看>>
java-框架-apache.commons.*工具
查看>>
数据分析的四种类型模式
查看>>
极限元算法专家:深度学习在语音生成问题上的典型应用
查看>>
flume列子回想
查看>>
融资后又有大动作,Geek+宣布进入日本市场
查看>>
用 Flask 来写个轻博客 (7) — (M)VC_models 的关系(many to many)
查看>>
揭秘马斯克清洁能源计划: 用太阳能满足能源需求
查看>>