当前位置: 代码迷 >> JavaScript >> JS脚本_浮点数截位[直接截位,带四舍五入效能]
  详细解决方案

JS脚本_浮点数截位[直接截位,带四舍五入效能]

热度:161   发布时间:2012-10-14 14:55:08.0
JS脚本_浮点数截位[直接截位,带四舍五入功能]
   纯收集JS有用的脚本函数。
   js的浮点数处理是值得关注的问题。不久前写了个页面浮点数校验的功能。页面中浮点数是以#,##0.00的格式显示的,在js中肯定不能用+直接做了。在js中对浮点数的处理如下:
  
notBlend = notBlend.replace(/,/g,""); //js的replace是支持正则表达式的,/,/代表要替换的字符,g代表全部替换
notBlend = parseFloat(notBlend);//去掉逗号后转换为float。js是没有parseDouble的
notBlend = formatnumber(notBlend,2);



//浮点数直接截位函数
function formatnumber(value,num){
    var tmp,idx,len,i
    tmp = value.toString();
    idx = tmp.indexOf('.');
    len = tmp.length;
    if (num==0){
        if (idx!=-1)
        tmp = tmp.substring(0,idx);
    }
    else{
        if (idx==-1){
            tmp = tmp + ".";
            for (i=1;i<=num;i++)
                tmp = tmp + "0";
        } else {
            tmp = tmp.substring(0,idx+num+1);
            for (i=len;i<=idx+num;i++)
                tmp = tmp + "0";
            }
        }
     return tmp
 }

//截位带四舍五入
function adv_format(value,num) //四舍五入
{
     var a_str = formatnumber(value,num);
     var a_int = parseFloat(a_str);
     if (value.toString().length>a_str.length){
          var b_str = value.toString().substring(a_str.length,a_str.length+1)
          var b_int = parseFloat(b_str);
          if (b_int<5){
               return a_str
          }else{
               var bonus_str,bonus_int;
               if (num==0){
                    bonus_int = 1;
               }else{
                    bonus_str = "0."
                    for (var i=1; i<num; i++)
                    bonus_str+="0";
                    bonus_str+="1";
                    bonus_int = parseFloat(bonus_str);
               }
         a_str = formatnumber(a_int + bonus_int, num)
          }
     }
     return a_str
}


  相关解决方案