題目
題目鏈接
二進制數轉字符串。給定一個介於0和1之間的實數(如0.72),類型爲double,打印它的二進制表達式。如果該數字不在0和1之間,或者無法精確地用32位以內的二進制表示,則打印“ERROR”。
示例1:
輸入:0.625
輸出:"0.101"
示例2:
輸入:0.1
輸出:"ERROR"
提示:0.1無法被二進制準確表示
提示:
32位包括輸出中的"0."這兩位。
實現思路
十進制小數轉二進制技巧
代碼
class Solution {
public String printBin(double num) {
StringBuilder sb = new StringBuilder();
sb.append("0.");
while (num != 0) {
num *= 2;
if (num >= 1) {
sb.append(1);
num -= 1;
} else {
sb.append(0);
}
if (sb.length() > 32) {
return "ERROR";
}
}
return sb.toString();
}
}