邀朋友种豆,一起分享吧
喜欢购买正品行货?那就去品牌街

JavaScript人民币小写转大写代码搜集

来自:种豆 时间:2017-12-29 阅读:567次 原文链接

1 JavaScript人民币金额小写转大写,大写保留到分

function NumToBig(num)
{
  if(isNaN(num))
  {
    alert(
'请检查小写金额是否正确!');
    return;
  }
  else
  {
    //保留两位有效数字
    num = Math.round(num*Math.pow(10,2))/Math.pow(10,2);
  }
  var NumStr = String(num);
  var NumChar = '零壹贰叁肆伍陆柒捌玖';
  var UnitChar1 = ' 拾佰仟 拾佰仟 拾佰仟 拾佰仟';
  var UnitChar2 = ' 万亿兆';
  var Len;
  var LeftLen,LeftStr;
  var RightLen,RightStr;
  var BigStr = '';
  Len
= NumStr.length;
  //根据小数点分割字符串
  if(NumStr.indexOf('.')==-1)//没有小数
  {
    LeftStr
= NumStr;
    LeftLen
= Len;
    RightStr
= '';
    RightLen
= 0;
  }
  else
  {
    LeftStr
= (NumStr.split('.'))[0];
    LeftLen
= LeftStr.length;
    RightStr
= (NumStr.split('.'))[1];
    RightLen
= RightStr.length;
  }
  //转换整数部分
  for(var i=0;i<LeftLen;i++)
  {
    //按位取小写数字
    var LeftTempNum = parseInt(LeftStr.substring(i,i+1));
    //转换成大写
    var LeftTempStr = NumChar.substring(LeftTempNum,LeftTempNum+1);
    //数字位为零且不是一位数
    if(TempStr=='' && LeftLen!=1)
    {
      //下一位数字为零或者为万(个)位
      if(LeftStr.substring(i+1,i+2)=='0' || (LeftLen-i)%4==1)
      {
        LeftTempStr
= '';
      }
    }
    else
    {
      //加上读的单位,拾佰仟之类的
      LeftTempStr += UnitChar1.substring(LeftLen-i-1,LeftLen-i).replace(' ','');
    }
    //万位或个位
    if((LeftLen-i)%4==1)
    {
      LeftTempStr
+= UnitChar2.substring(parseInt((LeftLen-i)/4),parseInt((LeftLen-i)/4)+1);
      if(i>2)
      {
        if(LeftStr.substring(i-3,i+1)=='0000')
        {
          LeftTempStr
= TempStr.substring(0,LeftTempStr.length-1);
        }
      }
    }
    BigStr
+= LeftTempStr.replace(' ','');
  }
  //处理小数部分
  if(RightLen==0)
  {
    BigStr
+= '元整';
  }
  else
  {
    BigStr
+= '';
    for(var i=0;i<RightLen;i++)
    {
      //按位取小写数字
      var RightTempNum = parseInt(RightStr.substring(i,i+1));
      //转换成大写
      var RightTempStr = NumChar.substring(RightTempNum,RightTempNum+1);
      if (i==0)
      {
        RightTempStr
+="";
      }
      if (i==1)
      {
        RightTempStr
+="";
      }
        BigStr
+= RightTempStr;
    }
  }
  return BigStr;
}

2 到亿位的金额小写转大写JS代码

function atoc(numberValue){
var numberValue=new String(Math.round(numberValue*100)); // 数字金额
var chineseValue="";          // 转换后的汉字金额
var String1 = "零壹贰叁肆伍陆柒捌玖";       // 汉字数字
var String2 = "万仟佰拾亿仟佰拾万仟佰拾元角分";     // 对应单位
var len=numberValue.length;         // numberValue 的字符串长度
var Ch1;             // 数字的汉语读法
var Ch2;             // 数字位的汉字读法
var nZero=0;            // 用来计算连续的零值的个数
var String3;            // 指定位置的数值 if(len>15){
   alert("超出计算范围");
   return "";
}
if (numberValue==0){
 
   chineseValue = "零元整";
   return chineseValue;
}
 
String2 = String2.substr(String2.length-len, len);   // 取出对应位数的STRING2的值
 
for(var i=0; i  
   String3 = parseInt(numberValue.substr(i, 1),10);   // 取出需转换的某一位的值
   //alert(String3);
   if ( i != (len - 3) && i != (len - 7) && i != (len - 11) && i !=(len - 15) ){
    if ( String3 == 0 ){
     Ch1 = "";
     Ch2 = "";
     nZero = nZero + 1;
    }else if ( String3 != 0 && nZero != 0 ){
     Ch1 = "零" + String1.substr(String3, 1);
     Ch2 = String2.substr(i, 1);
     nZero = 0;
    }else{
     Ch1 = String1.substr(String3, 1);
     Ch2 = String2.substr(i, 1);
     nZero = 0;
    }
   }else{              // 该位是万亿,亿,万,元位等关键位
    if( String3 != 0 && nZero != 0 ){
     Ch1 = "零" + String1.substr(String3, 1);
     Ch2 = String2.substr(i, 1);
     nZero = 0;
    }else if ( String3 != 0 && nZero == 0 ){
     Ch1 = String1.substr(String3, 1);
     Ch2 = String2.substr(i, 1);
     nZero = 0;
    }else if( String3 == 0 && nZero >= 3 ){
     Ch1 = "";
     Ch2 = "";
     nZero = nZero + 1;
    }else{
     Ch1 = "";
     Ch2 = String2.substr(i, 1);
     nZero = nZero + 1;
    }
  
    if( i == (len - 11) || i == (len - 3)) {    // 如果该位是亿位或元位,则必须写上
     Ch2 = String2.substr(i, 1);
    }
  
   }
   chineseValue = chineseValue + Ch1 + Ch2;
}

3 javascript人民币小写转大写(加强版)

 function cmycurd(num){  //转成人民币大写金额形式
  var str1 = '零壹贰叁肆伍陆柒捌玖';  //0-9所对应的汉字
  var str2 = '万仟佰拾亿仟佰拾万仟佰拾元角分'; //数字位所对应的汉字
  var str3;    //从原num值中取出的值
  var str4;    //数字的字符串形式
  var str5 = '';  //人民币大写金额形式
  var i;    //循环变量
  var j;    //num的值乘以100的字符串长度
  var ch1;    //数字的汉语读法
  var ch2;    //数字位的汉字读法
  var nzero = 0;  //用来计算连续的零值是几个
 
  num = Math.abs(num).toFixed(2);  //将num取绝对值并四舍五入取2位小数
  str4 = (num * 100).toFixed(0).toString();  //将num乘100并转换成字符串形式
  j = str4.length;      //找出最高位
  if (j > 15){return '溢出';}
  str2 = str2.substr(15-j);    //取出对应位数的str2的值。如:200.55,j为5所以str2=佰拾元角分
 
  //循环取出每一位需要转换的值
  for(i=0;i<j;i++){
    str3 = str4.substr(i,1);   //取出需转换的某一位的值
    if (i != (j-3) && i != (j-7) && i != (j-11) && i != (j-15)){    //当所取位数不为元、万、亿、万亿上的数字时
   if (str3 == '0'){
     ch1 = '';
     ch2 = '';
     nzero = nzero + 1;
   }
   else{
     if(str3 != '0' && nzero != 0){
       ch1 = '零' + str1.substr(str3*1,1);
          ch2 = str2.substr(i,1);
          nzero = 0;
  }
  else{
    ch1 = str1.substr(str3*1,1);
          ch2 = str2.substr(i,1);
          nzero = 0;
        }
   }
 }
 else{ //该位是万亿,亿,万,元位等关键位
      if (str3 != '0' && nzero != 0){
        ch1 = "零" + str1.substr(str3*1,1);
        ch2 = str2.substr(i,1);
        nzero = 0;
      }
      else{
     if (str3 != '0' && nzero == 0){
          ch1 = str1.substr(str3*1,1);
          ch2 = str2.substr(i,1);
          nzero = 0;
  }
        else{
    if (str3 == '0' && nzero >= 3){
            ch1 = '';
            ch2 = '';
            nzero = nzero + 1;
       }
       else{
      if (j >= 11){
              ch1 = '';
              nzero = nzero + 1;
   }
   else{
     ch1 = '';
     ch2 = str2.substr(i,1);
     nzero = nzero + 1;
   }
          }
  }
   }
 }
    if (i == (j-11) || i == (j-3)){  //如果该位是亿位或元位,则必须写上
        ch2 = str2.substr(i,1);
    }
    str5 = str5 + ch1 + ch2;
   
    if (i == j-1 && str3 == '0' ){   //最后一位(分)为0时,加上“整”
      str5 = str5 + '整';
    }
  }
  if (num == 0){
    str5 = '零元整';
  }
  return str5;
}
 
关于种豆 ┊ 联系我们 ┊ 免责声明 ┊ 发帖须知 ┊ 请提意见 ┊ 站点地图
本站为个人爱好兴趣分享网站,不代表本人观点,如有侵权请联系QQ3371650278进行处理
sowsoy.com 版权所有 Copyright©2010-2020 浙ICP备10212932号
Email:sowsoy#hotmail.com