把人民币转化成大写金额

def rmb_upper(num):
	mapp={0: '零', 1: '壹', 2: '贰', 3: '叁', 4: '肆', 5: '伍', 6: '陆', 7: '柒', 8: '捌', 9: '玖'}
	di={0: '分', 1: '角', 2: '元', 3: '拾', 4: '百', 5: '千', 6: '万', 7: '拾', 8: '百', 9: '千', 
		10: '亿', 11: '拾', 12: '百', 13: '千', 14: '万', 15: '拾', 16: '百', 17: '千', 18: '兆'}
	a=float(num)
	a=str(round(a,2)).split('.')
	listt=a[0]+a[1][::-1].zfill(2)[::-1]
	resul=[]
	for i,j in enumerate(list(listt)[::-1]):
		a=[mapp[int(j)]+di[i]]
		if a[0] in ['零亿','零万','零兆']:
			a=a[-1]
		elif a[0][0]=='零':	
			a='零'
		resul+=a
	resul=''.join(resul[::-1])

	if resul[-2:]=='零零':
		resul=resul[:-2]+'整'
	elif resul[-2:]=='零':
		resul=resul[:-1]
	if '零零' in resul:
		resul=resul.replace('零零','零')
	return resul

if __name__ == '__main__':
	print(rmb_upper(81777258.5613))
	print(1321311321321233232132212.01)
	print('数字太大了会有异常')

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我明白了。关于你的问题,可以编写一个MySQL自定义函数来实现人民币大写转数字的功能。下面是一个简单的MySQL自定义函数实现方式: ``` DELIMITER $$ CREATE FUNCTION rmb_to_number(rmb_str VARCHAR(255)) RETURNS DECIMAL(12,2) BEGIN DECLARE number DECIMAL(12,2); DECLARE digit DECIMAL(12,2); DECLARE unit VARCHAR(10); DECLARE rmb_len INT; DECLARE i INT; SET rmb_str = TRIM(rmb_str); IF rmb_str = '' THEN RETURN NULL; END IF; SET rmb_str = REPLACE(rmb_str, ' ', ''); IF rmb_str REGEXP '^(-)?[0-9]+(.[0-9]{1,2})?$' THEN RETURN CAST(rmb_str AS DECIMAL(12,2)); END IF; SET number = 0; SET digit = 1; SET rmb_len = LENGTH(rmb_str); IF rmb_len < 2 THEN RETURN NULL; END IF; IF rmb_str REGEXP '^(-)?[壹贰叁肆伍陆柒捌玖拾佰仟万亿元角分]+$' THEN SET i = 1; WHILE i <= rmb_len DO SET unit = SUBSTR(rmb_str, i, 1); IF unit IN ('壹', '一') THEN SET number = number + digit; ELSEIF unit IN ('贰', '两', '二') THEN SET number = number + digit * 2; ELSEIF unit = '叁' THEN SET number = number + digit * 3; ELSEIF unit = '肆' THEN SET number = number + digit * 4; ELSEIF unit = '伍' THEN SET number = number + digit * 5; ELSEIF unit = '陆' THEN SET number = number + digit * 6; ELSEIF unit = '柒' THEN SET number = number + digit * 7; ELSEIF unit = '捌' THEN SET number = number + digit * 8; ELSEIF unit = '玖' THEN SET number = number + digit * 9; ELSEIF unit = '拾' THEN SET digit = 10; ELSEIF unit = '佰' THEN SET digit = 100; ELSEIF unit = '仟' THEN SET digit = 1000; ELSEIF unit = '万' THEN SET digit = 10000; SET number = number * digit; SET digit = 1; ELSEIF unit = '亿' THEN SET digit = 100000000; SET number = number * digit; SET digit = 1; ELSEIF unit IN ('元', '圆') THEN SET digit = 1; ELSEIF unit = '角' THEN SET number = number + digit / 10; ELSEIF unit = '分' THEN SET number = number + digit / 100; END IF; SET i = i + 1; END WHILE; RETURN number; ELSE RETURN NULL; END IF; END$$ DELIMITER ; ``` 这个自定义函数可以将形如“叁仟贰佰元肆角伍分”这样的人民币大写转换为对应的数字金额,比如“3204.50”。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值