我刚读了一本关于 javascript 的书。作者在IEEE 754标准中提到了一个浮点运算舍入错误。
例如,将 0.1 和 0.2 相加得到 0.30000000000000004 而不是 0.3。
所以 (0.1 + 0.2) == 0.3
返回 false。
我也在 C# 中重现了这个错误。
所以我的问题是:
此错误发生的频率如何? c# 和 javascript 中的最佳实践解决方法是什么? 还有哪些其他语言有同样的错误?
最佳答案
这不是语言错误。这不是 IEEE 754 中的错误。这是二进制 float 的期望和使用中的错误。一旦您理解了二进制 float 的真正含义, 就非常有道理了。
C# 中的最佳实践是使用 System.Decimal
(又名 decimal
),这是一个decimal 浮点类型,无论何时处理自然以十进制表示的数量 - 通常是货币值。
请参阅我关于 .NET 的文章 binary floating point和 decimal floating point获取更多信息。
关于c# - c# 和 javascript 中的 IEEE 754 浮点算术舍入错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8503157/