人民币大写转化函数(ASP版和JavaScript版)

本文提供了ASP和JavaScript两种版本的函数,用于将数字转换为人民币大写的形式,包括普通货币形式和大写金额形式。函数能够处理溢出检查、连续零的处理,并能正确显示元、万、亿等关键字。
摘要由CSDN通过智能技术生成

ASP 版:

<%
'文 件 名:cmycur.asp
'作    者:二十四画生
'版    本:1.0
'简    介:转换函数文件。
'功能描述:转换货币形式的函数。(该文件包含两个函数,一个转换成一般货币形式cmycur(num),一个转换成大写形式cmycurd(num))
%>
<%
function cmycur(num) '转换为货币形式如:¥180.00元
  dim thenum
  if isnull(num) or num = "" then
    cmycur = " "
  else
    num = Round(num,2)
 thenum = FormatCurrency(num,2,-1)
 cmycur = thenum & "元"
  end if
end function

function cmycurd(num) 'num为要转换成大写的金额
  dim str1  '如下定义
  dim str2  '如下定义
  dim str3  '从原num值中取出的值
  dim i   '循环变量
  dim j   'num的值乘以100的字符串长度
  dim ch1  '数字的汉语读法
  dim ch2  '数字位的汉字读法
  dim nzero  '用来计算连续的零值是几个

  str1 = "零壹贰叁肆伍陆柒捌玖"
  str2 = "万仟佰拾亿仟佰拾万仟佰拾元角分"
  nzero = 0
  if isnull(num) or num = "" then
    cmycurd = " "
    exit function
  end if
  num = Round(Abs(num),2) '将num取绝对值并四舍五入取2位小数
  j = Len(CStr(num * 100))  '找出最高位
  if j > 15 then
    cmycurd = "溢出"
    exit function
  end if

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,我明白了。关于你的问题,可以编写一个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”。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值