阿拉伯数字金额转中文大写 (python实现)
2016-09-17 15:52
519 查看
分析
分小数和整数部分进行处理末尾的零应舍弃
中间有连续多个零,只取一个零
整数部分从右往左以4位为步长扫描
实现
# -*- coding: utf-8 -*- from __future__ import unicode_literals def convert(n): units = ['', '万', '亿'] nums = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'] decimal_label = ['角', '分'] small_int_label = ['', '拾', '佰', '仟'] int_part, decimal_part = str(int(n)), str(n - int(n))[2:] # 分离整数和小数部分 res = [] if decimal_part: res.append(''.join([nums[int(x)] + y for x, y in zip(decimal_part, decimal_label) if x != '0'])) if int_part != '0': res.append('圆') while int_part: small_int_part, int_part = int_part[-4:], int_part[:-4] tmp = ''.join([nums[int(x)] + (y if x != '0' else '') for x, y in zip(small_int_part[::-1], small_int_label)[::-1]]) tmp = tmp.rstrip('零').replace('零零零', '零').replace('零零', '零') unit = units.pop(0) if tmp: tmp += unit res.append(tmp) return ''.join(res[::-1]) print convert(0.22) print convert(0.20) print convert(0.02) print convert(1) print convert(12) print convert(123) print convert(1234) print convert(1230) print convert(1204) print convert(1034) print convert(1004) print convert(51234) print convert(51204) print convert(51034) print convert(50234) print convert(50034) print convert(50004) print convert(50000) print convert(12351234) print convert(12301234) print convert(12351234) print convert(12051234) print convert(10351234) print convert(10051234) print convert(10001234) print convert(10000000) print convert(10000004) print convert(10000030) print convert(10000200) print convert(10001000) print convert(10050000) print convert(12000010001) print convert(1409.50)
输出:
贰角贰分
贰角
贰分
壹圆
壹拾贰圆
壹佰贰拾叁圆
壹仟贰佰叁拾肆圆
壹仟贰佰叁拾圆
壹仟贰佰零肆圆
壹仟零叁拾肆圆
壹仟零肆圆
伍万壹仟贰佰叁拾肆圆
伍万壹仟贰佰零肆圆
伍万壹仟零叁拾肆圆
伍万零贰佰叁拾肆圆
伍万零叁拾肆圆
伍万零肆圆
伍万圆
壹仟贰佰叁拾伍万壹仟贰佰叁拾肆圆
壹仟贰佰叁拾万壹仟贰佰叁拾肆圆
壹仟贰佰叁拾伍万壹仟贰佰叁拾肆圆
壹仟贰佰零伍万壹仟贰佰叁拾肆圆
壹仟零叁拾伍万壹仟贰佰叁拾肆圆
壹仟零伍万壹仟贰佰叁拾肆圆
壹仟万壹仟贰佰叁拾肆圆
壹仟万圆
壹仟万零肆圆
壹仟万零叁拾圆
壹仟万零贰佰圆
壹仟万壹仟圆
壹仟零伍万圆
壹佰贰拾亿零壹万零壹圆
壹仟肆佰零玖圆伍角
相关文章推荐
- C#实现阿拉伯数字(小写金额)到大写中文(大写金额)的转换
- C# 实现将阿拉伯数字转换成中文大写金额
- C#实现的【阿拉伯数字转换成中文大写金额】
- C#实现阿拉伯数字(小写金额)到大写中文(大写金额)的转换
- C#实现的【阿拉伯数字转换成中文大写金额】代码(原创)
- javascript实现将数字金额变成中文大写金额
- 报表上金额由阿拉伯数字转换成中文大写
- Java中实现数字金额到中文大写字符的转换!! 选择自 netfalcon 的 Blog
- 使用C#实现阿拉伯数字到大写中文的转换-第二种方法
- 金额由阿拉伯数字转换成中文大写[修改版]
- 阿拉伯数字金额转换成中文大写(转)
- 货币金额阿拉伯数字转为中文大写
- PHP中实现数字金额到中文大写字符的转换
- 使用C#实现阿拉伯数字到大写中文的转换
- Java中实现数字金额到中文大写字符的转换!!
- 使用C#实现阿拉伯数字到大写中文的转换
- 报表上金额由阿拉伯数字转换成中文大写
- Java中实现数字金额到中文大写字符的转换!!
- 报表上金额由阿拉伯数字转换成中文大写
- 数字金额转换中文大写Java实现