题目描述
有一个介于0和1之间的实数,类型为double,返回它的二进制表示。如果该数字无法精确地用32位以内的二进制表示,返回“Error”。
给定一个double num,表示0到1的实数,请返回一个string,代表该数的二进制表示或者“Error”。
测试样例:
0.625
返回:0.101
import java.util.*;
public class BinDecimal {
public String printBin(double num) {
// write code here
StringBuilder sb = new StringBuilder();
int i = 0;
while(!equal(num,0)){
i ++;
if(i > 32) break;
num = num * 2;
if(equal(num, 1)) {
sb.append(1);
num = num -1;
}
else
sb.append(0);
}
if(i > 32) return "Error";
else return "0." +sb.toString();
}
public boolean equal(double num,int n){
if(num - n< 0.0000001 && num -n > -0.000000001)
return true;
else return false;
}
}