程序员面试金典 -- 二进制小数

程序员面试金典 -- 二进制小数

 

题目描述

有一个介于0和1之间的实数,类型为double,返回它的二进制表示。如果该数字无法精确地用32位以内的二进制表示,返回“Error”。

给定一个double num,表示0到1的实数,请返回一个string,代表该数的二进制表示或者“Error”。

测试样例:
0.625
返回:0.101

 

规律是 num * 2 > 1 , 后面就需要加1, 而小于 0 , 则需要 加 0; 

 

class BinDecimal {
public:
    string printBin(double num) {
        // write code here
        string ans = "0."; 
        while(abs(num) > 1e-6) {
            num *= 2; 
            if(num >= 1){
                num -= 1; 
                ans += "1"; 
            } else {
                ans += "0"; 
            }
            if(ans.length() > 32){
                ans = "Error"; 
                break; 
            }
        }
        return ans; 
    }
};

  

posted @ 2017-07-13 21:11  zhang--yd  阅读(165)  评论(0编辑  收藏  举报