首页 > 其他 > 详细

面试题 05.02. 二进制数转字符串

时间:2020-03-30 15:28:52      阅读:71      评论:0      收藏:0      [点我收藏+]

题目:

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

 

面试题 05.02. 二进制数转字符串

原文:https://www.cnblogs.com/FdWzy/p/12598172.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!