c++ - C++ 中的舍入错误

标签 c++ math programming-languages rounding rounding-error

<分区>

Possible Duplicate:
Why can't decimal numbers be represented exactly in binary?

语言c++ 我正在声明一个数组,并在其中保存数字(键入 double )。然后我开始比较数组中每两个元素之间的差异。 例如

a[1] = 0.05
a[2] = 0.1
a[3] = 0.15

所以 当我执行以下操作时

if(a[3] - a[2] == a[2] - a[1] )

条件变为假!!

调试后发现0.05保存在数组中为 0.0499……993 0.10 和 0.15 的情况类似

我怎样才能克服这个问题?

最佳答案

您永远不应该比较 float 是否完全相等。

你应该阅读 What Every Computer Scientist Should Know About Floating-Point Arithmetic找出原因。

关于c++ - C++ 中的舍入错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5938559/

相关文章:

c++ - iostream 的问题

c++ - 如何打印 const void* 的值

c# - 寻找将负整数归零的 .NET Math 方法

algorithm - 确定乘积和多项式中最佳权重的快速算法?

学习新语言时要解决的算法/问题

c++ - win32 API函数GetModuleFileName或GetModuleHandle中的 "Module"是什么?

c++ - MongoDB C++ 驱动程序 BSON() 用于生成具有空值的 BSON

.net - 如何检查 .NET 中值类型之间的 "safe"转换?

functional-programming - 纯函数式语言中的全局变量

programming-languages - 为什么有些语言不使用分号和大括号?