我遇到了fmod()
功能的问题。
这段代码应该是真的,但不知怎的,它不是。有什么帮助吗?
if (fmod(1.9, 0.3) == 0.1) {
cout << "True." << endl;
}
答案 0 :(得分:2)
浮点数不准确。你可以这样做的一种方法是,
#include <limits>
if (fabs(fmod(1.9,0.3) - 0.1) < std::numeric_limits<double>::epsilon()) {
cout << "True." << endl;
}
然而,这是一个粗略的解决方案并不完全正确。做一些搜索,了解如何比较stackoverflow上的双打/浮点数来讨论这个问题。