首页 > 解决方案 > 整数或双 1.0 和 1

问题描述

我想读取一个双精度数并确定输入是整数还是双精度数。问题是当我输入1.00(双精度)时,我得到的结果是整数

double a;
cin >> a;
if (a == int(a))
    cout << "Integer";
else
    cout << "Double";

标签: c++

解决方案


您可以读入一个字符串并检查它是否包含小数点分隔符。假设它是 '.',这里是一个示例实现:

#include <iostream>
#include <string>

int main()
{
  std::string s;
  std::cin >> s;
  std::cout << ((s.find('.') == std::string::npos) ? "integer" : "double") << std::endl;
  return 0;
}

您还必须检查指数(如2e-1)。这是完成这一切的一种方法:

#include <iostream>
#include <string>

int main()
{
  std::string s;
  std::cin >> s;
  if (s.find_first_of(".,eE") == std::string::npos)
    std::cout << "integer" << std::endl;
  else
    std::cout << "double" << std::endl;
  return 0;
}

推荐阅读