标准库是否提供检查double是否与整数相同的函数?

时间:2015-04-26 23:21:23

标签: c++

我需要一个可以检查float是否与整数类型相同的函数。基本上我想要这样的东西:

template <typename FloatType>
bool is_like_integer(FloatType f)
{
  return f == static_cast<FloatType>(static_cast<int>(f));
}

虽然我不知道这是否涵盖所有情况。

基本上我需要这个的原因是因为我将浮点数转换为整数并且希望能够处理浮点数不能完美表示整数的情况。标准库是否提供类似的内容?

1 个答案:

答案 0 :(得分:1)

你可以使用modf,它将一个浮点分成整数和小数部分:

float intPart;
if (modf(someInt, &intPart) == 0.0f) {
    // exactly representable
}