金额数字变金额大写方法

function Arabia_to_Chinese(Num){

   for(i=Num.length-1;i>=0;i--)
   {
      Num = Num.replace(",","")
      Num = Num.replace(" ","")
   }

   if(isNaN(Num)) {
      alert("请检查小写金额是否正确");
      return;
   }

   var part = new Array();
   part = String(Num).split(".");
   var newchar = "";
   var tmpnewchar;
   var perchar;
   
   for(i=part[0].length-1;i>=0;i--){
   
   if(part[0].length > 10){
   
      alert("位数过大,无法计算");
      return "";
   }
   
   tmpnewchar = "";
   perchar = part[0].charAt(i);
   switch(perchar){
      case "0": tmpnewchar="零" + tmpnewchar ;break;
      case "1": tmpnewchar="壹" + tmpnewchar ;break;
      case "2": tmpnewchar="贰" + tmpnewchar ;break;
      case "3": tmpnewchar="叁" + tmpnewchar ;break;
      case "4": tmpnewchar="肆" + tmpnewchar ;break;
      case "5": tmpnewchar="伍" + tmpnewchar ;break;
      case "6": tmpnewchar="陆" + tmpnewchar ;break;
      case "7": tmpnewchar="柒" + tmpnewchar ;break;
      case "8": tmpnewchar="捌" + tmpnewchar ;break;
      case "9": tmpnewchar="玖" + tmpnewchar ;break;
   }
   switch(part[0].length-i-1){
      case 0: tmpnewchar = tmpnewchar +"元" ;break;
      case 1: if(perchar!=0)tmpnewchar= tmpnewchar +"拾" ;break;
      case 2: if(perchar!=0)tmpnewchar= tmpnewchar +"佰" ;break;
      case 3: if(perchar!=0)tmpnewchar= tmpnewchar +"仟" ;break;
      case 4: tmpnewchar= tmpnewchar +"万" ;break;
      case 5: if(perchar!=0)tmpnewchar= tmpnewchar +"拾" ;break;
      case 6: if(perchar!=0)tmpnewchar= tmpnewchar +"佰" ;break;
      case 7: if(perchar!=0)tmpnewchar= tmpnewchar +"仟" ;break;
      case 8: tmpnewchar= tmpnewchar +"亿" ;break;
      case 9: tmpnewchar= tmpnewchar +"拾" ;break;
   }
   newchar = tmpnewchar + newchar;
   }
   
   if(Num.indexOf(".")!=-1){
      if(part[1].length > 2) {
         part[1] = part[1].substr(0,2)
      }
      for(i=0;i<part[1].length;i++){
         tmpnewchar = ""
         perchar = part[1].charAt(i)
         switch(perchar){
            case "0": tmpnewchar="零" + tmpnewchar ;break;
            case "1": tmpnewchar="壹" + tmpnewchar ;break;
            case "2": tmpnewchar="贰" + tmpnewchar ;break;
            case "3": tmpnewchar="叁" + tmpnewchar ;break;
            case "4": tmpnewchar="肆" + tmpnewchar ;break;
            case "5": tmpnewchar="伍" + tmpnewchar ;break;
            case "6": tmpnewchar="陆" + tmpnewchar ;break;
            case "7": tmpnewchar="柒" + tmpnewchar ;break;
            case "8": tmpnewchar="捌" + tmpnewchar ;break;
            case "9": tmpnewchar="玖" + tmpnewchar ;break;
         }
         if(i==0)tmpnewchar =tmpnewchar + "角";
         if(i==1)tmpnewchar = tmpnewchar + "分";
         newchar = newchar + tmpnewchar;
      }
   }

   while(newchar.search("零零") != -1)
   newchar = newchar.replace("零零", "零");
   newchar = newchar.replace("零亿", "亿");
   newchar = newchar.replace("亿万", "亿");
   newchar = newchar.replace("零万", "万");
   newchar = newchar.replace("零元", "元");
   newchar = newchar.replace("零角", "");
   newchar = newchar.replace("零分", "");
   if (newchar.charAt(newchar.length-1) == "元" || newchar.charAt(newchar.length-1) == "角"){
      newchar = newchar+"整";
   }
   
   return newchar;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 MySQL 的自定义函数来将金额数字转换成中文大写。以下是一个自定义函数的例子: ```sql DELIMITER $$ CREATE FUNCTION convert_to_chinese(IN num DECIMAL(16,2)) RETURNS VARCHAR(255) BEGIN DECLARE sign CHAR(2); -- 符号 DECLARE integer_part VARCHAR(64); -- 整数部分 DECLARE decimal_part VARCHAR(64); -- 小数部分 DECLARE result VARCHAR(255); -- 结果 IF num < 0 THEN SET sign = '负'; SET num = -num; ELSE SET sign = ''; END IF; SET integer_part = CAST(FLOOR(num) AS CHAR); SET decimal_part = RIGHT(CAST(num AS CHAR), 2); SET result = sign + _convert_integer_part(integer_part) + '元' + _convert_decimal_part(decimal_part) + '角'; RETURN result; END$$ -- 转换整数部分 CREATE FUNCTION _convert_integer_part(IN num VARCHAR(64)) RETURNS VARCHAR(255) BEGIN DECLARE i INT DEFAULT 1; -- 数字位数 DECLARE len INT; -- 数字长度 DECLARE result VARCHAR(255); -- 结果 IF num = '0' THEN RETURN '零'; END IF; SET len = LENGTH(num); WHILE i <= len DO SET result = CONCAT(_convert_digit(SUBSTR(num, i, 1)), _convert_unit(len - i)) + result; SET i = i + 1; END WHILE; SET result = TRIM(result); SET result = REPLACE(result, '零零', '零'); SET result = REPLACE(result, '零万', '万'); SET result = REPLACE(result, '零亿', '亿'); SET result = REPLACE(result, '亿万', '亿'); RETURN result; END$$ -- 转换小数部分 CREATE FUNCTION _convert_decimal_part(IN num VARCHAR(2)) RETURNS VARCHAR(255) BEGIN DECLARE result VARCHAR(255); -- 结果 IF num = '00' THEN RETURN '整'; END IF; SET result = _convert_digit(SUBSTR(num, 1, 1)); IF result <> '零' THEN SET result = result + '角'; END IF; SET result = result + _convert_digit(SUBSTR(num, 2, 1)); IF result <> '零' THEN SET result = result + '分'; END IF; RETURN result; END$$ -- 转换数字位 CREATE FUNCTION _convert_digit(IN num CHAR(1)) RETURNS VARCHAR(2) BEGIN CASE num WHEN '0' THEN RETURN '零'; WHEN '1' THEN RETURN '壹'; WHEN '2' THEN RETURN '贰'; WHEN '3' THEN RETURN '叁'; WHEN '4' THEN RETURN '肆'; WHEN '5' THEN RETURN '伍'; WHEN '6' THEN RETURN '陆'; WHEN '7' THEN RETURN '柒'; WHEN '8' THEN RETURN '捌'; WHEN '9' THEN RETURN '玖'; END CASE; END$$ -- 转换数字单位 CREATE FUNCTION _convert_unit(IN num INT) RETURNS VARCHAR(2) BEGIN CASE num WHEN 1 THEN RETURN '元'; WHEN 2 THEN RETURN '拾'; WHEN 3 THEN RETURN '佰'; WHEN 4 THEN RETURN '仟'; WHEN 5 THEN RETURN '万'; WHEN 6 THEN RETURN '拾'; WHEN 7 THEN RETURN '佰'; WHEN 8 THEN RETURN '仟'; WHEN 9 THEN RETURN '亿'; WHEN 10 THEN RETURN '拾'; WHEN 11 THEN RETURN '佰'; WHEN 12 THEN RETURN '仟'; ELSE RETURN ''; END CASE; END$$ DELIMITER ; ``` 该函数将数字转换成中文大写金额字符串,并支持负数和小数。你可以将需要转换的数字作为参数传递给该函数。例如: ```sql SELECT convert_to_chinese(123456789.12) AS amount; ``` 该语句将数字 `123456789.12` 转换成中文大写金额字符串,并将结果存储在 `amount` 字段中。结果为 `"壹亿贰仟叁佰肆拾伍万陆仟柒佰捌拾玖元壹角贰分"`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值