我正在尝试检查double类型的数字是否为整数。在here中,有几种方法。我已经选择了其中一个,但该方法在没有循环的情况下正常工作。一旦我把它放在一个循环中,它就可以使用一些数字并且无法检查其他数字。这是代码
#include <iostream>
#include <cmath>
bool IsInteger(double x) {
return std::fmod(x, static_cast<decltype(x)>(1.0)) == 0.0; // Test if fraction is 0.0.
}
int main(int argc, char* argv[])
{
for (double i(0); i <= 4.0; i += 0.2 )
if ( IsInteger(i) )
std::cout << i << " " << IsInteger(i) << std::endl;
return 0;
}
上述代码适用于0.0
和1.0
,但无法验证2.0
和3.0
。代码在Windows 7中运行,编译器是visual studio。如果有关于此事的功能,我可以提升。