二進制小數

十進制小數轉其他進制小數:

二進制

對十進制小數乘2得到的整數部分和小數部分,整數部分既是相應的二進制數碼,再用2乘小數部分(之前乘後得到新的小數部分),又得到整數和小數部分.
如此不斷重複,直到小數部分爲0或達到精度要求爲止.第一次所得到爲最高位,最後一次得到爲最低位
如:0.25的二進制
0.25*2=0.5 取整是0
0.5*2=1.0 取整是1
即0.25的二進制爲 0.01 ( 第一次所得到爲最高位,最後一次得到爲最低位)

0.8125的二進制

0.8125*2=1.625 取整是1

0.625*2=1.25 取整是1

0.25*2=0.5 取整是0

0.5*2=1.0 取整是1

即0.8125的二進制是0.1101(第一次所得到爲最高位,最後一次得到爲最低位)

八進制

十進制小數→→→→→八進制小數 方法:“乘8取整”

題目描述

有一個介於0和1之間的實數,類型爲double,返回它的二進制表示。如果該數字無法精確地用32位以內的二進制表示,返回“Error”。
給定一個double num,表示0到1的實數,請返回一個string,代表該數的二進制表示或者“Error”。
測試樣例:
0.625
返回:0.101

class BinDecimal {
public:
    string printBin(double num) {
        // write code here
        string res = "0.";
        int count = 0;
        double now = num;
        while (count < 32){
            if(now == 0)
                return res;
            now *= 2;
            char c;
            if(now >= 1){
                c = '1';
                now -= 1;
            }
            else{
                c = '0';
            }
            res += c;
            count++;
        }
        return "Error";
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章