二进制数转字符串

题目:

二进制数转字符串。给定一个介于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/

你可能感兴趣的:(二进制数转字符串)