JS实现数字金额转换为大写金额

来源:互联网 发布:好看的战争小说 知乎 编辑:程序博客网 时间:2024/06/05 11:22
 
  1. function atoc(numberValue){   
  2.   
  3.      
  4.   
  5.   var numberValue=new String(Math.round(numberValue*100)); // 数字金额   
  6.   
  7.   var chineseValue="";          // 转换后的汉字金额   
  8.   
  9.   var String1 = "零壹贰叁肆伍陆柒捌玖";       // 汉字数字   
  10.   
  11.   var String2 = "万仟佰拾亿仟佰拾万仟佰拾元角分";     // 对应单位   
  12.   
  13.   var len=numberValue.length;         // numberValue 的字符串长度   
  14.   
  15.   var Ch1;             // 数字的汉语读法   
  16.   
  17.   var Ch2;             // 数字位的汉字读法   
  18.   
  19.   var nZero=0;            // 用来计算连续的零值的个数   
  20.   
  21.   var String3;            // 指定位置的数值   
  22.   
  23.   if(len>15){   
  24.   
  25.    alert("超出计算范围");   
  26.   
  27.    return "";   
  28.   
  29.   }   
  30.   
  31.   if (numberValue==0){   
  32.   
  33.       
  34.   
  35.    chineseValue = "零元整";   
  36.   
  37.    return chineseValue;   
  38.   
  39.       
  40.   
  41.   }   
  42.   
  43.      
  44.   
  45.   String2 = String2.substr(String2.length-len, len);   // 取出对应位数的STRING2的值   
  46.   
  47.      
  48.   
  49.   for(var i=0; i       
  50.   
  51.    String3 = parseInt(numberValue.substr(i, 1),10);   // 取出需转换的某一位的值   
  52.   
  53.    //alert(String3);   
  54.   
  55.    if ( i != (len - 3) && i != (len - 7) && i != (len - 11) && i !=(len - 15) ){   
  56.   
  57.        
  58.   
  59.     if ( String3 == 0 ){   
  60.   
  61.         
  62.   
  63.      Ch1 = "";   
  64.   
  65.      Ch2 = "";   
  66.   
  67.      nZero = nZero + 1;   
  68.   
  69.         
  70.   
  71.     }else if ( String3 != 0 && nZero != 0 ){   
  72.   
  73.         
  74.   
  75.      Ch1 = "零" + String1.substr(String3, 1);   
  76.   
  77.      Ch2 = String2.substr(i, 1);   
  78.   
  79.      nZero = 0;   
  80.   
  81.         
  82.   
  83.     }else{   
  84.   
  85.         
  86.   
  87.      Ch1 = String1.substr(String3, 1);   
  88.   
  89.      Ch2 = String2.substr(i, 1);   
  90.   
  91.      nZero = 0;   
  92.   
  93.     }   
  94.   
  95.    }else{              // 该位是万亿,亿,万,元位等关键位   
  96.   
  97.     if( String3 != 0 && nZero != 0 ){   
  98.   
  99.         
  100.   
  101.      Ch1 = "零" + String1.substr(String3, 1);   
  102.   
  103.      Ch2 = String2.substr(i, 1);   
  104.   
  105.      nZero = 0;   
  106.   
  107.         
  108.   
  109.     }else if ( String3 != 0 && nZero == 0 ){   
  110.   
  111.         
  112.   
  113.      Ch1 = String1.substr(String3, 1);   
  114.   
  115.      Ch2 = String2.substr(i, 1);   
  116.   
  117.      nZero = 0;   
  118.   
  119.         
  120.   
  121.     }else if( String3 == 0 && nZero >= 3 ){   
  122.   
  123.         
  124.   
  125.      Ch1 = "";   
  126.   
  127.      Ch2 = "";   
  128.   
  129.      nZero = nZero + 1;   
  130.   
  131.         
  132.   
  133.     }else{   
  134.   
  135.         
  136.   
  137.      Ch1 = "";   
  138.   
  139.      Ch2 = String2.substr(i, 1);   
  140.   
  141.      nZero = nZero + 1;   
  142.   
  143.         
  144.   
  145.     }   
  146.   
  147.        
  148.   
  149.     if( i == (len - 11) || i == (len - 3)) {    // 如果该位是亿位或元位,则必须写上   
  150.   
  151.      Ch2 = String2.substr(i, 1);   
  152.   
  153.     }   
  154.   
  155.        
  156.   
  157.    }   
  158.   
  159.    chineseValue = chineseValue + Ch1 + Ch2;   
  160.   
  161.       
  162.   
  163.   }   
  164.   
  165.      
  166.   
  167.   if ( String3 == 0 ){           // 最后一位(分)为0时,加上“整”   
  168.   
  169.    chineseValue = chineseValue + "整";   
  170.   
  171.   }   
  172.   
  173.      
  174.   
  175.   return chineseValue;   
  176.   
  177.  }  
原创粉丝点击