`
weini174
  • 浏览: 4080 次
  • 性别: Icon_minigender_1
  • 来自: 河北
社区版块
存档分类
最新评论

Javascript 计算精度问题

 
阅读更多

页面上用javascript进行计算式经常会遇到精度问题,目前我们采用的方式是讲小数乘10的n次幂变为整数,然后在计算,

/**处理运算精度丢失问题**/
Number.prototype.add = function(num){
    var str1 = this.toString();
    var arr1 = str1.split('.');
    var len1 = arr1[1]? arr1[1].length:0;
    if(num)
    {
        var str2 = num.toString();
        var arr2 = str2.split('.');
        var len2 = arr2[1]? arr2[1].length:0;
       
       
        var baseNum = Math.pow(10,Math.max(len1,len2));
        return (this*baseNum+num*baseNum)/baseNum;
    }
    return this;
}
Number.prototype.sub = function(num){
    var str1 = this.toString();
    var arr1 = str1.split('.');
    var len1 = arr1[1]? arr1[1].length:0;
    if(num)
    {
        var str2 = num.toString();
        var arr2 = str2.split('.');
        var len2 = arr2[1]? arr2[1].length:0;
       
       
        var baseNum = Math.pow(10,Math.max(len1,len2));
        return (this*baseNum-num*baseNum)/baseNum;;
    }
    return this;
}
 调用方式
var leave = Number(totalJZ).sub(Number(currJGL));
 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics