How can I add float numbers without issue 0.1 + 0.2 !== 0.3? 
我在地图应用程序中工作。所以我用浮点数(lat和long)处理了很多。我知道我们有与0.1+0.2相关的问题!==0.3。那我怎么能使它无效呢?有什么方法可以增加多个浮点数吗?
		
		
- 你真的有问题吗,或者你想在内心感到温暖、模糊和聪明吗?(实际上并不经常出现问题。)无论如何,这需要使用固定精度库(或其他手动处理)。
- 介绍一些var epsilon = 0.0001并检查两个操作数之间的差的Math.abs()是否小于它。
- @用户2864740:你真的那么懒惰地运行0.1 + 0.2 != 0.3还是仅仅想发布一些"聪明"的东西?
- @泽克斯:我是说,这可能无关紧要;如果处理不当(取决于上下文),这只是一个"问题"。我没有看到这个问题中讨论的"问题"(它只是指出了一个被广泛理解的base2浮点实现的效果),这正是我之前的评论(尽管看起来很古怪)试图引出的。
- @用户2864740使用浮点数时,我希望感觉良好。
- @Eddy除了需要处理精确的精度值外,例如货币情况(以及其他一些问题),相对精度浮点通常足够精确、简单/标准且[相对]快速。也许,所使用的比较方法可以修改为采用epsilon而不是直接相等?也就是说,不是"数学坏了",而是"使用==通常是不合适的"。你能在主贴中提出一个观点吗?比如说"问题",主张一种或另一种方式?
 
	 
一种解决方案是以一种考虑到(非常小)由IEEE754浮动导致的精度损失的方式比较值,这种浮动无法准确地表示所有分数,例如。
| 12
 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这样的大数字。/