2

可能重复:
了解浮点问题

此页面有一个简单的警报:

alert(185.3 + 12.37);

对我来说,这应该等于 197.67

但是,在我测试过的浏览器(OSX 上的 Chrome/Safari,Win7 上的 FF)中,答案是:

197.67000000000002

这是为什么?这只是一个已知的错误,还是对 JavaScript 的添加比我意识到的更多?

4

3 回答 3

8

javascript 使用double数据类型,由于二进制位的限制,它不能准确地表示所有十进制数(并非所有数字都可以用有限的二进制位表示)。您可以在wikipedia上阅读更多内容。

于 2011-04-11T01:24:17.637 回答
3

您应该阅读以下内容:

http://download.oracle.com/docs/cd/E19957-01/806-3568/ncg_goldberg.html

这不是错误;这只是每种语言的浮点数的众所周知的事实。

于 2011-04-11T01:27:34.087 回答
2

在二进制中,这是无限重复的二进制分数11000101.10(10101110000101000111)——它不能用有限的位数表示,所以它被四舍五入到一个近似值。

于 2011-04-11T01:29:44.760 回答