可能重复:
了解浮点问题
此页面有一个简单的警报:
alert(185.3 + 12.37);
对我来说,这应该等于 197.67
但是,在我测试过的浏览器(OSX 上的 Chrome/Safari,Win7 上的 FF)中,答案是:
197.67000000000002
这是为什么?这只是一个已知的错误,还是对 JavaScript 的添加比我意识到的更多?
可能重复:
了解浮点问题
此页面有一个简单的警报:
alert(185.3 + 12.37);
对我来说,这应该等于 197.67
但是,在我测试过的浏览器(OSX 上的 Chrome/Safari,Win7 上的 FF)中,答案是:
197.67000000000002
这是为什么?这只是一个已知的错误,还是对 JavaScript 的添加比我意识到的更多?
javascript 使用double
数据类型,由于二进制位的限制,它不能准确地表示所有十进制数(并非所有数字都可以用有限的二进制位表示)。您可以在wikipedia上阅读更多内容。
您应该阅读以下内容:
http://download.oracle.com/docs/cd/E19957-01/806-3568/ncg_goldberg.html
这不是错误;这只是每种语言的浮点数的众所周知的事实。
在二进制中,这是无限重复的二进制分数11000101.10(10101110000101000111)
——它不能用有限的位数表示,所以它被四舍五入到一个近似值。