现在的位置: 首页 > 综合 > 正文

JS 保留2位小数 数字金额转化为文字大写

2018年01月26日 ⁄ 综合 ⁄ 共 4180字 ⁄ 字号 评论关闭

 //保留2位小数
      function changeTwoDecimal(x)  {  
             var f_x = parseFloat(x);  
            if (isNaN(f_x)){  
          alert('不是一个有效的数字!~');  
                return false;  
             }  
              var f_x = Math.round(x*100)/100;  
  
              return changeTwoDecimal_f(f_x);  
             }; 
    function changeTwoDecimal_f(x)  {  
              var f_x = parseFloat(x);  
               if (isNaN(f_x))  {  
           alert('不是一个有效的数字');  
              return false;  
            }  
             var f_x = Math.round(x*100)/100;  
             var s_x = f_x.toString();  
            var pos_decimal = s_x.indexOf('.');  
            if (pos_decimal < 0) {  
            pos_decimal = s_x.length;  
            s_x += '.';  
             }  
          while (s_x.length <= pos_decimal + 2)  {  
              s_x += '0';  
                }  
           return s_x;  
            }  ;
            
 
          //金额转化为文字
   function ChangeToBig(value)
 {
         var intFen,i;
         var strArr,strCheck,strFen,strDW,strNum,strBig,strNow;
         if (value == null)   //数据非法时提示,并返回空串
         {
                 strErr = "数据"+value+"非法!"
                 alert(strErr);
                 return "";
         }
         if(value==0)
                 return "零";
         strCheck = value+".";
         strArr = strCheck.split(".");
         strCheck = strArr[0];
         if(strCheck.length>12)   //数据大于等于一万亿时提示无法处理
         {
                 strErr = "数据"+value+"过大,无法处理!"
                 alert(strErr);
                 return "";
         }
         try
         {
                 i = 0;
                 strBig = "";
                 intFen = value*100;          //转换为以分为单位的数值
                 strFen = intFen.toString();
                 strArr = strFen.split(".");
                 strFen = strArr[0];
                 intFen = strFen.length;      //获取长度
                 strArr = strFen.split("");//将各个数值分解到数组内
                 while(intFen!=0)   //分解并转换
                 {
                         i = i+1;
                         switch(i)              //选择单位
                         {
                                 case 1:strDW = "分";break;
                                 case 2:strDW = "角";break;
                                 case 3:strDW = "元";break;
                                 case 4:strDW = "拾";break;
                                 case 5:strDW = "佰";break;
                                 case 6:strDW = "仟";break;
                                 case 7:strDW = "万";break;
                                 case 8:strDW = "拾";break;
                                 case 9:strDW = "佰";break;
                                 case 10:strDW = "仟";break;
                                 case 11:strDW = "亿";break;
                                 case 12:strDW = "拾";break;
                                 case 13:strDW = "佰";break;
                                 case 14:strDW = "仟";break;
                         }
                         switch (strArr[intFen-1])              //选择数字
                         {
                                 case "1":strNum = "壹";break;
                                 case "2":strNum = "贰";break;
                                 case "3":strNum = "叁";break;
                                 case "4":strNum = "肆";break;
                                 case "5":strNum = "伍";break;
                                 case "6":strNum = "陆";break;
                                 case "7":strNum = "柒";break;
                                 case "8":strNum = "捌";break;
                                 case "9":strNum = "玖";break;
                                 case "0":strNum = "零";break;
                         }
                         //处理特殊情况
                         strNow = strBig.split("");
                         //分为零时的情况
                         if((i==1)&&(strArr[intFen-1]=="0"))
                                 strBig = "整";
                         //角为零时的情况
                         else if((i==2)&&(strArr[intFen-1]=="0"))
                         {    //角分同时为零时的情况
                                 if(strBig!="整")
                                 strBig = "零"+strBig;
                         }
                         //元为零的情况
                         else if((i==3)&&(strArr[intFen-1]=="0"))
                                 strBig = "元"+strBig;
                         //拾-仟中一位为零且其前一位(元以上)不为零的情况时补零
                         else if((i<7)&&(i>3)&&(strArr[intFen-1]=="0")&&(strNow[0]!="零")&&(strNow[0]!="元"))
                                 strBig = "零"+strBig;
                         //拾-仟中一位为零且其前一位(元以上)也为零的情况时跨??
                         else if((i<7)&&(i>3)&&(strArr[intFen-1]=="0")&&(strNow[0]=="零"))
                         {} 
                         //拾-仟中一位为零且其前一位是元且为零的情况时跨过
                         else if((i<7)&&(i>3)&&(strArr[intFen-1]=="0")&&(strNow[0]=="元"))
                         {}
                         //当万为零时必须补上万字
                         else if((i==7)&&(strArr[intFen-1]=="0"))
                                strBig ="万"+strBig;
                         //拾万-仟万中一位为零且其前一位(万以上)不为零的情况时补零
                         else if((i<11)&&(i>7)&&(strArr[intFen-1]=="0")&&(strNow[0]!="零")&&(strNow[0]!="万"))
                                 strBig = "零"+strBig;
                         //拾?颍蛑幸晃晃闱移淝耙晃唬ㄍ蛞陨希┮参愕那榭鍪笨绻?
                         else if((i<11)&&(i>7)&&(strArr[intFen-1]=="0")&&(strNow[0]=="万"))
                         {}
                         //拾万-仟万中一位为零且其前一位为万位且为零的情况时跨过
                         else if((i<11)&&(i>7)&&(strArr[intFen-1]=="0")&&(strNow[0]=="零"))
                         {}
                         //万位为零且存在仟位和十万以上时,在万仟间补零
                         else if((i<11)&&(i>8)&&(strArr[intFen-1]!="0")&&(strNow[0]=="万")&&(strNow[2]=="仟"))
                         strBig = strNum+strDW+"万零"+strBig.substring(1,strBig.length);
                         //单独处理亿位
                         else if(i==11)
                         {
                                 //亿位为零且万全为零存在仟位时,去掉万补为零
                                 if((strArr[intFen-1]=="0")&&(strNow[0]=="万")&&(strNow[2]=="仟"))
                                         strBig ="亿"+"零"+strBig.substring(1,strBig.length);
                                 //亿位为零且万全为零不存在仟位时,去掉万
                                 else if((strArr[intFen-1]=="0")&&(strNow[0]=="万")&&(strNow[2]!="仟"))
                                         strBig ="亿"+strBig.substring(1,strBig.length);
                                 //亿位不为零且万全为零存在仟位时,去掉万补为零
                                 else if((strNow[0]=="万")&&(strNow[2]=="仟"))
                                         strBig = strNum+strDW+"零"+strBig.substring(1,strBig.length);
                                 //亿位不为零且万全为零不存在仟位时,去掉万
                                 else if((strNow[0]=="万")&&(strNow[2]!="仟"))
                                         strBig = strNum+strDW+strBig.substring(1,strBig.length);
                                 //其他正常情况
                                 else
                                         strBig = strNum+strDW+strBig;
                         }
                         //拾亿-仟亿中一位为零且其前一位(亿以上)不为零的情况时补零
                         else if((i<15)&&(i>11)&&(strArr[intFen-1]=="0")&&(strNow[0]!="零")&&(strNow[0]!="亿"))
                                 strBig = "零"+strBig;
                         //拾亿-仟亿中一位为零且其前一位(亿以上)也为零的情况时跨过
                         else if((i<15)&&(i>11)&&(strArr[intFen-1]=="0")&&(strNow[0]=="亿"))
                         {}
                         //拾亿-仟亿中一位为零且其前一位为亿位且为零的情况时跨过
                         else if((i<15)&&(i>11)&&(strArr[intFen-1]=="0")&&(strNow[0]=="零"))
                         {}
                         //亿位为零且不存在仟万位和十亿以上时去掉上次写入的??
                         else if((i<15)&&(i>11)&&(strArr[intFen-1]!="0")&&(strNow[0]=="零")&&(strNow[1]=="亿")&&(strNow[3]!="仟"))
 
                                strBig = strNum+strDW+strBig.substring(1,strBig.length);
 
                        //亿位为零且存在仟万位和十亿以上时,在亿仟万间补零
 
                        else if((i<15)&&(i>11)&&(strArr[intFen-1]!="0")&&(strNow[0]=="零")&&(strNow[1]=="亿")&&(strNow[3]=="仟"))
 
                                strBig = strNum+strDW+"亿零"+strBig.substring(2,strBig.length);
 
                        else
 
                                strBig = strNum+strDW+strBig;
                                 strFen = strFen.substring(0,intFen-1);
                                 intFen = strFen.length;
                                 strArr = strFen.split("");
                 }
                 return strBig;
         }catch(err){
                 return "";      //若失败则返回原值
         }
 }


            

抱歉!评论已关闭.