页面上用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));