美文网首页
二进制数转字符串

二进制数转字符串

作者: WAI_f | 来源:发表于2020-07-21 01:43 被阅读0次

题目:

二进制数转字符串。给定一个介于0和1之间的实数(如0.72),类型为double,打印它的二进制表达式。如果该数字不在0和1之间,或者无法精确地用32位以内的二进制表示,则打印“ERROR”。

示例:

输入:0.625
输出:"0.101"
32位包括输出中的"0."这两位。

解题方法:

小数的二进制表示:
num=a_{1}*2^{-1}+a_{2}*2^{-2}+...+ a_{n}*2^{-n}
将double类型的num转成二进制也就是获得a_{1}a_{2},...,a_{n}

代码和结果:

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/

相关文章

网友评论

      本文标题:二进制数转字符串

      本文链接:https://www.haomeiwen.com/subject/vwzmkktx.html