javascript - js中1-0.55=0.44999999999999996怎么解决
天蓬老师
天蓬老师 2017-04-10 15:14:06
0
4
377

如题 今天在使用js进行数据自动结算时出现这样的结果

bjObj.val(parseFloat(1-parseFloat(xzObj.val())));

就是通过这个代码来计算的 结果1-0.55 的0.44999999999999996

请大神讲解说明如果能够修复更好
runjs代码库

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

reply all(4)
洪涛

用toFixed()来选择保留几位小数

var number = 0.3 - 0.2      //    0.09999999999999998
number.toFixed(2)           //    "0.10"
typeof number.toFixed(2)    //    "string"
number = +number.toFixed(2) //    0.1

也可以用这个big.js

左手右手慢动作

如果要做到精确,那先定义好要保留小数点后几位,即精确到10的 k 次方分位。小数点右边第一位是十分位,第二位是百分位。假设要保留小数点后两位,就是精确到百分位,那么先把结果乘以100,再四舍五入取整,再除以100。

Math.round(parseFloat(1 - 0.55) * 100) / 100
小葫芦

如同0.1 + 0.2 不等于0.3一样,这是数值的精度问题,你可以考虑下乘以某个数值例如1000然后再运算,也可以对结果 toFixed ,还可以用 https://github.com/MikeMcl/bignumber.js

迷茫

这东西是js自身的精度问题,我的做法是:
((1-0.55)+1e-6).toFixed(2) // 2或几 看你的需求
1e-6 是0.000001 //这里的6或几 也是看你的需求

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template