Run ID 作者 问题 语言 测评结果 Time Memory 代码长度 提交时间
134994 胡海峰老师 十进制小数转二进制 C++ Accepted 1 MS 276 KB 1349 2025-11-02 09:17:32

Tests(10/10):


Code:

#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; }