免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2044 | 回复: 1
打印 上一主题 下一主题

javascript中数字金额转化为大写金额 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-12 23:22 |只看该作者 |倒序浏览
javascript中数字金额转化为大写金额











具体代码:
alert(cmycurd(10050));
  1. function cmycurd(num){  //转成人民币大写金额形式
  2.   var str1 = '零壹贰叁肆伍陆柒捌玖';  //0-9所对应的汉字
  3.   var str2 = '万仟佰拾亿仟佰拾万仟佰拾元角分'; //数字位所对应的汉字
  4.   var str3;    //从原num值中取出的值
  5.   var str4;    //数字的字符串形式
  6.   var str5 = '';  //人民币大写金额形式
  7.   var i;    //循环变量
  8.   var j;    //num的值乘以100的字符串长度
  9.   var ch1;    //数字的汉语读法
  10.   var ch2;    //数字位的汉字读法
  11.   var nzero = 0;  //用来计算连续的零值是几个

  12.   num = Math.abs(num).toFixed(2);  //将num取绝对值并四舍五入取2位小数
  13.   str4 = (num * 100).toFixed(0).toString();  //将num乘100并转换成字符串形式
  14.   j = str4.length;      //找出最高位
  15.   if (j > 15){return '溢出';}
  16.   str2 = str2.substr(15-j);
复制代码
//取出对应位数的str2的值。如:200.55,j为5所以str2=佰拾元角分

  //循环取出每一位需要转换的值
  1.   for(i=0;i<j;i++){
  2.     str3 = str4.substr(i,1);   //取出需转换的某一位的值
  3.     if (i != (j-3) && i != (j-7) && i != (j-11) && i != (j-15)){    //当所取位数不为元、万、亿、万亿上的数字时
  4.     if (str3 == '0'){
  5.      ch1 = '';
  6.      ch2 = '';
  7.   nzero = nzero + 1;
  8.    }
  9.    else{
  10.      if(str3 != '0' && nzero != 0){
  11.        ch1 = '零' + str1.substr(str3*1,1);
  12.           ch2 = str2.substr(i,1);
  13.           nzero = 0;
  14.   }
  15.   else{
  16.     ch1 = str1.substr(str3*1,1);
  17.           ch2 = str2.substr(i,1);
  18.           nzero = 0;
  19.         }
  20.    }
  21. }
复制代码
else{ //该位是万亿,亿,万,元位等关键位
  1.       if (str3 != '0' && nzero != 0){
  2.         ch1 = "零" + str1.substr(str3*1,1);
  3.         ch2 = str2.substr(i,1);
  4.         nzero = 0;
  5.       }
  6.       else{
  7.      if (str3 != '0' && nzero == 0){
  8.           ch1 = str1.substr(str3*1,1);
  9.           ch2 = str2.substr(i,1);
  10.           nzero = 0;
  11.   }
  12.         else{
  13.     if (str3 == '0' && nzero >= 3){
  14.             ch1 = '';
  15.             ch2 = '';
  16.             nzero = nzero + 1;
  17.        }
  18.        else{
  19.       if (j >= 11){
  20.               ch1 = '';
  21.               nzero = nzero + 1;
  22.    }
  23.    else{
  24.      ch1 = '';
  25.      ch2 = str2.substr(i,1);
  26.      nzero = nzero + 1;
  27.    }
  28.           }
  29.   }
  30.    }
  31. }
  32.     if (i == (j-11) || i == (j-3)){  //如果该位是亿位或元位,则必须写上
  33.         ch2 = str2.substr(i,1);
  34.     }
  35.     str5 = str5 + ch1 + ch2;
  36.    
  37.     if (i == j-1 && str3 == '0' ){   //最后一位(分)为0时,加上“整”
  38.       str5 = str5 + '整';
  39.     }
  40.   }
  41.   if (num == 0){
  42.     str5 = '零元整';
  43.   }
  44.   return str5;
  45. }
复制代码

论坛徽章:
0
2 [报告]
发表于 2011-12-24 20:01 |只看该作者
谢谢分享  希望于楼主多多交流
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP