我正在测试我的一些代码,在javascript中我添加.1 + .2并且它给了我.30000000000000004而不是.3。我不明白这一点。 但当我添加.1 + .3时,它给了我.4。我用Google搜索并找到了关于Double Precision添加的内容。但我不知道它是什么。
答案 0 :(得分:14)
以下是强制性链接:What Every Computer Scientist Should Know About Floating-Point Arithmetic
基本上,有许多基数为10的数字无法用大多数计算机使用的浮点格式精确表示,因此您会遇到类似于您突出显示的问题。
答案 1 :(得分:2)
如果你不能为每个计算机科学家应该知道的关于浮点运算的事情保持清醒,请尝试使用特定于javascript的Rounding in JavaScript。
答案 2 :(得分:1)
浮点数具有有限的精度,因为数字存储在有限的位数中。
您尝试存储的号码无法准确存储,因此使用近似值。
What Every Computer Scientist Should Know About Floating-Point Arithmetic