大写金额转换为数字的简单算法
chinese_num = {
u'〇': 0, u'零': 0,
u'一': 1, u'壹': 1,
u'二': 2, u'两': 2, u'贰': 2,
u'三': 3, u'叁': 3,
u'四': 4, u'肆': 4,
u'五': 5, u'伍': 5,
u'六': 6, u'陆': 6,
u'七': 7, u'柒': 7,
u'八': 8, u'捌': 8,
u'九': 9, u'玖': 9,
u'十': 10, u'拾': 10,
u'百': 100, u'佰': 100,
u'千': 1000, u'仟': 1000,
u'万': 10000, u'萬': 10000,
u'亿': 100000000, u'億': 100000000,
}
# 叁仟
def chinese2digits(value):
total = 0.00
# 基础单位
base_unit = 1
# 可变单位
dynamic_unit = 1
for i in range(len(value) - 1, -1, -1):
val = chinese_num.get(value[i])
# 表示单位
if not val:
continue
if val > 10:
if val > base_unit:
base_unit = val
else:
dynamic_unit = base_unit * val
# 10既可以做单位也可做数字
elif val == 10:
if i == 0:
if dynamic_unit > base_unit:
total = total + dynamic_unit * val
else:
total = total + base_unit * val
else:
dynamic_unit = base_unit * val
else:
if dynamic_unit > base_unit:
total = total + dynamic_unit * val
else:
total = total + base_unit * val
return total
print(chinese2digits('叁仟万元整'))
输出结果
30000000.0
本文作者: 永生
本文链接: https://yys.zone/detail/?id=271
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
评论列表 (0 条评论)