题目链接
题目描述
注意点
- 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";
    }
}
        关键点
- 小数转为二进制的思路
 
