| Run ID | 作者 | 问题 | 语言 | 测评结果 | Time | Memory | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|
| 134994 | 胡海峰老师 | 十进制小数转二进制 | C++ | Accepted | 1 MS | 276 KB | 1349 | 2025-11-02 09:17:32 |
#include <iostream> #include <string> #include <cmath> using namespace std; string decimalToBinary(double num) { // 处理整数部分 int integerPart = (int)num; string binary = ""; // 如果整数部分为0,则二进制整数部分为"0" if (integerPart == 0) { binary = "0"; } else { // 转换整数部分 while (integerPart > 0) { binary = to_string(integerPart % 2) + binary; integerPart /= 2; } } // 处理小数部分 double fractionalPart = num - (int)num; string fractionalBinary = ""; if (fractionalPart > 0) { binary += "."; // 最多转换20位小数部分,避免无限循环 int maxDigits = 20; while (fractionalPart > 0 && maxDigits > 0) { fractionalPart *= 2; if (fractionalPart >= 1) { fractionalBinary += "1"; fractionalPart -= 1; } else { fractionalBinary += "0"; } maxDigits--; } binary += fractionalBinary; } return binary; } int main() { double num; cin >> num; string result = decimalToBinary(num); cout << result << endl; return 0; }