十进制数转换二进制,要求只能含有数字0-9和小数点,有其他符号就报错,用c++实现
时间: 2024-09-25 22:02:08 浏览: 36
C++实现的任意进制转换(数据结构——栈和队列)
在C++中,你可以使用`std::bitset`或者手动处理每一位来进行十进制转二进制。这里提供一个简单的函数示例,它接受一个整数作为输入,并返回一个字符串表示的二进制形式:
```cpp
#include <iostream>
#include <string>
std::string decimalToBinary(int decimal) {
if (decimal < 0) {
throw std::invalid_argument("Input cannot be negative for binary conversion.");
}
// 对于正数转换
std::string binary;
while (decimal > 0) {
binary = std::to_string(decimal % 2) + binary;
decimal /= 2;
}
// 如果有小数部分
if (decimal != 0) {
binary += ".";
int fraction_decimal = static_cast<int>(std::frexp(decimal, &exponent)[1]); // 获取小数部分
while (fraction_decimal > 0) {
binary += std::to_string(fraction_decimal % 10);
fraction_decimal /= 10;
}
}
return binary;
}
int main() {
try {
int decimal_input;
std::cout << "Enter a non-negative decimal number: ";
std::cin >> decimal_input;
std::string binary_result = decimalToBinary(decimal_input);
std::cout << "Binary representation: " << binary_result << std::endl;
} catch (const std::exception& e) {
std::cerr << "Error: " << e.what() << std::endl;
}
return 0;
}
```
这个函数首先检查输入是否为负数,然后将整数部分转换成二进制,如果有小数部分,则再将其添加到结果中。注意,对于浮点数的小数部分,我们使用了`std::frexp`函数来分别获取小数和指数。
阅读全文