How can I add float numbers without issue 0.1 + 0.2 !== 0.3?
本问题已经有最佳答案,请猛点这里访问。
我在地图应用程序中工作。所以我用浮点数(lat和long)处理了很多。我知道我们有与0.1+0.2相关的问题!==0.3。那我怎么能使它无效呢?有什么方法可以增加多个浮点数吗?
一种解决方案是以一种考虑到(非常小)由IEEE754浮动导致的精度损失的方式比较值,这种浮动无法准确地表示所有分数,例如。
1 2 3 4 5 6 7 8 9 10 | function diff(a, b) { return Math.abs(a - b); } var a = 0.1; var b = 0.2; if ( diff(0.3, a+b) > 1e-10) { /* fail */ } |
如果需要JavaScript中的精度,您应该使用像https://github.com/mikecl/big.js这样的大数字。/