页面上用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));
本文介绍了一种使用JavaScript处理浮点数运算时精度丢失的方法。通过将小数转换为整数进行计算,再转回小数,有效解决了常见的精度误差问题。提供了加法和减法的实现,并展示了调用示例。
3397

被折叠的 条评论
为什么被折叠?



