1、思路
-
二进制数 $0.1012$ 的二进制表示为:$0.101_2 = 1 × 1/2^1 + 0 × 1/2^2 + 1 × 1/2^3$;
-
为了打印它的小数部分,可以将这个数乘以$2$,检查其是否大于或等于$1$,若是则在字符串后追加$1$,否则追加$0$。
2、代码
class Solution {
public:
string printBin(double num) {
if (num >= 1 || num <= 0) return "ERROR";
string binary = "0.";
while (num > 0)
{
if (binary.length() >= 32) //长度超过32返回error
{
return "ERROR";
}
num *= 2; //判断 2*num是否大于 1
if (num >= 1)
{
binary += "1";
num -= 1;
}
else
{
binary += "0";
}
}
return binary;
}
};