題目:
二進制數(shù)轉(zhuǎn)字符串吠冤。給定一個介于0和1之間的實數(shù)(如0.72)浑彰,類型為double,打印它的二進制表達式拯辙。如果該數(shù)字不在0和1之間郭变,或者無法精確地用32位以內(nèi)的二進制表示颜价,則打印“ERROR”。
示例:
輸入:0.625
輸出:"0.101"
32位包括輸出中的"0."這兩位诉濒。
解題方法:
小數(shù)的二進制表示:
將double類型的num轉(zhuǎn)成二進制也就是獲得周伦,,...未荒,专挪。
代碼和結(jié)果:
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;
}
};
運行結(jié)果:原題鏈接:https://leetcode-cn.com/problems/bianry-number-to-string-lcci/