【发布时间】:2012-01-20 03:35:09
【问题描述】:
我刚读了一本关于 javascript 的书。作者提到了 IEEE 754 标准中的浮点算术舍入误差。
例如,将 0.1 和 0.2 相加得到 0.30000000000000004 而不是 0.3。
所以(0.1 + 0.2) == 0.3 返回 false。
我也在c#中重现了这个错误。
所以我的问题是:
此错误多久发生一次? c# 和 javascript 中的最佳实践解决方法是什么? 哪些其他语言有相同的错误?
【问题讨论】:
-
有一本书称这是“舍入错误”??
-
这不是一个“错误”,因为它是设计使然,但它很麻烦。我确信在某些情况下这将是有用的行为,但在实践中(至少在 JavaScript 中)我认为如果默认表示为“正确”(精确的以 10 为底)十进制表示会更有用。我真的从来不想要一个 binary 浮点数。
-
这本书是 Nicholas C. Zakas 的“面向 Web 开发人员的 JavaScript”第 2 版。第 33 页描述了“错误”。
标签: c# javascript floating-point ieee-754