题目:
二进制数转字符串。给定一个介于0和1之间的实数(如0.72),类型为double,打印它的二进制表达式。如果该数字不在0和1之间,或者无法精确地用32位以内的二进制表示,则打印“ERROR”。
示例:
输入:0.625
输出:"0.101"
32位包括输出中的"0."这两位。
解题方法:
小数的二进制表示:
将double类型的num转成二进制也就是获得,,...,。
代码和结果:
class Solution {
public:
string printBin(double num) {
if(num>=1||num<=0) return "ERROR";
string s="0.";
int i=0;
double nn=1;
while(num!=0)
{
i++;
nn*=0.5;
int b=num/nn;
num=num-b*nn;
s.push_back(b+'1'-1);
if(i>32)
return "ERROR";
}
return s;
}
};
运行结果:原题链接:https://leetcode-cn.com/problems/bianry-number-to-string-lcci/