c# - c# 和 javascript 中的 IEEE 754 浮点算术舍入错误

标签 c# javascript floating-point ieee-754

我刚读了一本关于 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 pointdecimal floating point获取更多信息。

关于c# - c# 和 javascript 中的 IEEE 754 浮点算术舍入错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8503157/

相关文章:

c# - .NET 可以加载和解析等效于 Java Properties 类的属性文件吗?

c# - 通过 CSOM 动态加载项目联机属性

javascript - 如何在reactjs中使用按钮隐藏组件?

javascript - IE10 是否更改了 window.location.port 的定义?

C++ 精度 : String to Double

c# - C5集合中的更新如何工作?

c# - 将非映射属性添加到实体 EF5

javascript - 通过 ajax 加载内容时,光滑 slider 不会实例化

c++ - 表示任何 double 值所需的最大字符长度是多少?

haskell - 如何返回小数点后2位的 float ?