与fmod()结果的比较返回false

时间:2013-09-05 23:00:22

标签: c++ floating-point modulus

我遇到了fmod()功能的问题。

这段代码应该是真的,但不知怎的,它不是。有什么帮助吗?

if (fmod(1.9, 0.3) == 0.1) {  
    cout << "True." << endl;  
}

1 个答案:

答案 0 :(得分:2)

浮点数不准确。你可以这样做的一种方法是,

#include <limits>

if (fabs(fmod(1.9,0.3) - 0.1) <  std::numeric_limits<double>::epsilon()) {
    cout << "True." << endl;
}

然而,这是一个粗略的解决方案并不完全正确。做一些搜索,了解如何比较stackoverflow上的双打/浮点数来讨论这个问题。