如题 今天在使用js进行数据自动结算时出现这样的结果
bjObj.val(parseFloat(1-parseFloat(xzObj.val())));
就是通过这个代码来计算的 结果1-0.55 的0.44999999999999996
请大神讲解说明如果能够修复更好
runjs代码库
如题 今天在使用js进行数据自动结算时出现这样的结果
bjObj.val(parseFloat(1-parseFloat(xzObj.val())));
就是通过这个代码来计算的 结果1-0.55 的0.44999999999999996
请大神讲解说明如果能够修复更好
runjs代码库
如果要做到精确,那先定义好要保留小数点后几位,即精确到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或几 也是看你的需求
13 回答12.8k 阅读
7 回答1.9k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
6 回答872 阅读✓ 已解决
6 回答1k 阅读
2 回答1.3k 阅读✓ 已解决
用toFixed()来选择保留几位小数
也可以用这个big.js