怎么判断输入的数是小数c++
时间: 2024-09-25 22:02:25 浏览: 60
在C++中,判断一个输入的数是否为小数通常需要检查它是否包含除数字0和正负号之外的小数点"."。以下是一个简单的示例方法:
```cpp
#include <iostream>
#include <sstream>
bool isDecimal(const std::string& input) {
if (input.empty()) return false; // 空字符串不是小数
std::istringstream iss(input);
char current_char;
while (iss >> current_char) {
if (current_char == '.') { // 找到小数点
if (iss.peek() != EOF) { // 检查小数点后是否有非零数字
int next_char = iss.get();
while (next_char != EOF && next_char != '.') {
if (next_char == '0') {
if (iss.peek() == '.') continue; // 非零小数点后跟0可以接受
else return false; // 否则,如果不是0.0就不是小数
} else if (next_char != ' ') {
return true; // 如果遇到非零数字,则确定是小数
}
next_char = iss.get();
}
} else {
return false; // 如果小数点后没有更多字符,说明不是一个完整的小数
}
} else if (!isdigit(current_char)) {
return false; // 如果找到非数字字符且不是小数点,则不是小数
}
}
return iss.fail(); // 如果读取结束后仍有数据未处理(如整数部分过长),则也是小数
}
int main() {
std::string number_str = "3.14";
if (isDecimal(number_str)) {
std::cout << "这是一个小数.\n";
} else {
std::cout << "这不是一个小数.\n";
}
return 0;
}
```
阅读全文