原文链接: https://leetcode-cn.com/problems/bianry-number-to-string-lcci
英文原文
Given a real number between 0 and 1 (e.g., 0.72) that is passed in as a double, print the binary representation. If the number cannot be represented accurately in binary with at most 32 characters, print "ERROR".
Example1:
Input: 0.625 Output: "0.101"
Example2:
Input: 0.1 Output: "ERROR" Note: 0.1 cannot be represented accurately in binary.
Note:
- This two charaters "0." should be counted into 32 characters.
中文题目
二进制数转字符串。给定一个介于0和1之间的实数(如0.72),类型为double,打印它的二进制表达式。如果该数字无法精确地用32位以内的二进制表示,则打印“ERROR”。
示例1:
输入:0.625 输出:"0.101"
示例2:
输入:0.1 输出:"ERROR" 提示:0.1无法被二进制准确表示
提示:
- 32位包括输出中的"0."这两位。
通过代码
高赞题解
一.思路
十进制的小数转换为二进制小数,主要是利用小数部分乘2后,取整数部分,直至小数点后为0
二.代码
class Solution {
public:
string printBin(double num) {
string ans = "0.";
while (num != 0) {
num *= 2;
if (num >= 1) { //乘2后num>=1,说明此时整数部分为1,取完该整数部分1后,num接着利用的还是其小数部分,所以要减掉整数部分(即1)
ans += "1";
num -= 1;
} else { //小于1说明整数部分为0,取该整数部分0
ans += "0";
}
if (ans.size() > 32) return "ERROR";
}
return ans;
}
};
统计信息
通过次数 | 提交次数 | AC比率 |
---|---|---|
8170 | 11770 | 69.4% |
提交历史
提交时间 | 提交结果 | 执行时间 | 内存消耗 | 语言 |
---|