题目链接
题目描述
注意点
- 32位包括输出中的 "0." 这两位
- 题目保证输入用例的小数位数最多只有 6 位
解答思路
- 将小数转为二进制的思路是将小数乘2,如果整数部分为1,则说明第i位是1(第i位则乘了2的几次方),否则说明第i位是0,循环该过程直到num为0或者字符串长度大于32(题目要求数字无法精确地用32位以内的二进制表示,则打印"ERROR")
代码
java
class Solution {
public String printBin(double num) {
StringBuilder sb = new StringBuilder("0.");
while (sb.length() <= 32 && num != 0) {
num *= 2;
if (num < 1) {
sb.append("0");
} else {
sb.append("1");
num -= 1;
}
}
return num == 0 ? sb.toString() : "ERROR";
}
}
关键点
- 小数转为二进制的思路