c++ - 整数或双 1.0 和 1
问题描述
我想读取一个双精度数并确定输入是整数还是双精度数。问题是当我输入1.00
(双精度)时,我得到的结果是整数
double a;
cin >> a;
if (a == int(a))
cout << "Integer";
else
cout << "Double";
解决方案
您可以读入一个字符串并检查它是否包含小数点分隔符。假设它是 '.',这里是一个示例实现:
#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;
}
推荐阅读
- git - 如何设置多个git遥控器,其中一些文件隐藏在同一目录下的另一个文件中
- sql-server - 引用表“卡”中没有与外键中的引用列列表匹配的主键或候选键
- python - Python:从多个子文件夹导入时找不到模块
- python - 将列表拆分为子列表
- arrays - 将字符二维数组从函数传递到主函数
- python - apt 认为 python-3.7.3 是最新版本
- go - Caddy Server Certmagic - 无效的内存地址
- ios - 上下文菜单 RTL 问题
- java - 如何在 Eclipse 中重命名 Java 模块?
- android - Android 滑块或拼图验证码