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));
 

猜你喜欢

转载自weini174.iteye.com/blog/2278634
今日推荐