我想读取一个双精度数字并确定输入是Integer还是double。问题是当我输入1.00(是双精度)时,我得到的结果是整数
double a;
cin >> a;
if (a == int(a))
cout << "Integer";
else
cout << "Double";
Run Code Online (Sandbox Code Playgroud)
您可以读入字符串并检查它是否包含小数点分隔符。假设它是“。”,这是一个示例实现:
#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;
}
Run Code Online (Sandbox Code Playgroud)
您还必须检查指数(如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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
157 次 |
| 最近记录: |