检查双变量是否包含整数,而不是浮点

新手上路,请多包涵

我的意思是:

   double d1 =555;
  double d2=55.343

我想知道 d1 是一个整数,而 d2 不是。有没有一种简单的方法可以在 c/c++ 中做到这一点?

原文由 vehomzzz 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 422
2 个回答

使用 std::modf

 double intpart;
modf(value, &intpart) == 0.0

不要转换为 int !数字 1.0e+300 你也知道是一个整数。

编辑:正如 Pete Kirkham 指出的那样,标准不能保证将 0 作为第二个参数传递,需要使用虚拟变量,不幸的是,这使得代码不那么优雅。

原文由 avakar 发布,翻译遵循 CC BY-SA 3.0 许可协议

modf 使用 std::nearbyint(num) 这就是为什么你应该使用 nearbyint 它返回一个不带小数的双精度并且可能更快。

 #include <iostream>
#include <cmath>

int main() {
    double      number = 55.12;

    if (!(number - std::nearbyint(number))) {
      std::cout << "Is integer!";
    } else {
      std::cout << "Has decimal!";
    }

    return 0;
}

原文由 user9342572809 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题