其他分享
首页 > 其他分享> > 面试题 05.02. 二进制数转字符串

面试题 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;
    }
};

 

标签:10,面试题,进制,二进制,res,0.5,05.02,num,数转
来源: https://www.cnblogs.com/FdWzy/p/12598172.html