2

我的fmod()功能有问题。

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

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

1 回答 1

2

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

#include <limits>

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

但是,这是一个粗略的解决方案,并不完全正确。搜索一下如何在 stackoverflow 上比较双精度/浮点数,以讨论该问题。

于 2013-09-05T23:12:06.740 回答