Binary to String:给定一个[0, 1]之间的实数,用string返回其二进制表示,如果二进制表示长于32个字符,则返回ERROR。
根据十进制转二进制的规则,对小数部分不断乘2减1即可。
class Solution {
private:
const string strErr = "ERROR";
public:
string printBin(double num) {
if(num > 1.0 || num < 0.0){
return strErr;
}
string strRet = "0.";
while(num > 0.0){
if(strRet.size() >= 34) return strErr;
double r = num * 2;
if(r >= 1.0){
strRet.push_back('1');
num = r - 1.0;
}
else{
strRet.push_back('0');
num = r;
}
}
return strRet;
}
};
也可以通过和0.5、0.25、0.125等比较大小来确定每一位的二进制表示。
class Solution {
private:
const string strErr = "ERROR";
public:
string printBin(double num) {
if(num > 1.0 || num < 0.0){
return strErr;
}
double fraction = 0.5;
string strRet = "0.";
while(num > 0.0){
if(strRet.size() >= 34) return strErr;
if(num >= fraction){
strRet.push_back('1');
num -= fraction;
}
else{
strRet.push_back('0');
}
fraction /= 2.0;
}
return strRet;
}
};
本文介绍了一种将[0,1]区间内的实数转换为二进制字符串的方法,若二进制长度超过32位则返回错误。通过不断乘2并判断结果是否大于等于1来决定二进制位的值,提供了两种实现方式。

被折叠的 条评论
为什么被折叠?



