c++中比较两个双精度值没有得到正确的结果
Comparing two doubles in c++ not yielding correct result
我有两个双精度值,a和b,在c++中应该是相等的,但由于某种原因没有被这样对待。以下代码:
cout << a << "==" << b << ": " << (a == b) << endl;
输出是0.5 == 0.5: 0
知道为什么这个结果是假的吗?
为了避免在比较小数时出现错误,可以使用以下函数:
bool AreSame(double a, double b)
{
return fabs(a - b) < EPSILON;
}
,其中EPSILON可以用一个小数字表示,例如.001
摘自这个问题
编辑:通过包含<limits>
,可以使用std::numeric_limits<double>::epsilon()
相关文章:
- 如何使双精度值的 C++ 和 C# 中的结果相同
- Fmod 函数清楚地输出一个预期的双精度值,但 if(fmod == 预期的双精度值)的计算结果不是 true
- 使用 sprintf 和 %g 将双精度转换为字符串的意外结果
- 为什么使用 int64_t 会产生错误的结果,而双精度则按预期进行简单的整数乘法
- 在发布版本中划分两个双精度的结果错误
- 将uint64_t转换为双精度后出现意外结果
- 在C++中,添加双精度值会在不同的程序之间产生不同的结果
- 从 CSV C++中提取双精度值时出现意外结果
- 通过更改代码格式来计算结构向量中包含的双精度变量的平均值的不同结果?
- 将双精度转换为 int 的结果是错误的
- 着色器中实现双精度cos()的结果是NaN,但在CPU上运行良好.出了什么问题
- 双精度数组和结果与 WIN32 和 WIN64 上的C++不一致
- 在所有声明的双精度但整数结果中打印带有函数的圆的面积,为什么
- 比较两个双精度值但结果很奇怪
- 为什么我所有的双精度计算都在循环中给出相同的结果
- 用双精度计算 pow 会给出错误的结果
- 即使使用长双精度(c++),结果也只有小数点后5位
- 浮点计算给出的结果与使用双精度计算的结果不同
- C++ POW(X,Y) X 负双精度和 Y 负双精度,结果给出 nan
- c++中比较两个双精度值没有得到正确的结果