程序员面试金典 -- 二进制小数
题目描述
有一个介于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; } };