面试题 05.02. 二进制数转字符串
题目:
二进制数转字符串。给定一个介于0和1之间的实数(如0.72),类型为double,打印它的二进制表达式。如果该数字不在0和1之间,或者无法精确地用32位以内的二进制表示,则打印“ERROR”。
解答:
0.625:*2=1.25,把1拿走得到0.1;剩下0.25*2=0.5,没有1,得到0.10;0.5*2=1,拿走1得到0.101。
解释:二进制0.1=10进制0.5;二进制0.01等于10进制0.25;二进制0.001等于10进制0.125。。。。。。
class Solution { public: string printBin(double num) { string res="0."; int i=0; while(i<32 and num>0){ num=2*num; if(num>=1){ res+='1'; num-=1; } else{ res+='0'; } ++i; } return num?"ERROR":res; } };
进击的小🐴农