您的位置:首页 > Web前端 > JavaScript

js处理浮点运算精度不正确的问题

2015-08-21 00:00 811 查看
摘要: js处理浮点运算精度不正确的问题

在平时做前台js处理金额运算时经常遇到两个数相加得到结果与预想的值有所偏差

如:

104490.02+87480

我们预想值应该是191970.02,但是计算机运算出的结果是191970.02000000002,这样的结果造成我们程序中的数据产生偏差。

解决方法一:

function accAdd(arg1,arg2){
var r1,r2,m;
try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}
try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}
m=Math.pow(10,Math.max(r1,r2))
return (arg1*m+arg2*m)/m
}

解决方法二 :对运算结果做精度处理

/**

* @description:

*

* @param : {参数类型} src 要做处理的数据

* @param : {参数类型} pos 精度

* @return :

*

*/

function formatFloat(src, pos) {

return Math.round(src * Math.pow(10, pos)) / Math.pow(10, pos);

}

function accAdd(arg1,arg2){
var r1,r2,m;
try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}
try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}
m=Math.pow(10,Math.max(r1,r2))
formatFloat(arg1*arg2, m);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: