0~1间浮点实数的二进制表示
➢给定一个介于0和1之间的实数,(如0.625) ,类型为double,打印它的二进制表示(0.101,
因为小数点后的二进制分别表示0.5,0.25.0.125…)。
➢如果该数字无法精确地用32位以内的二进制表示,则打印“ERROR”
public class Main {
public static void main(String[] args) {
//0~1间浮点实数的二进制表示
double a = 0.625;
StringBuilder sb = new StringBuilder("0.");
while (a>0) {
double num = a * 2;
//判断整数部分
if (num >= 1) {
sb.append("1");
//消除整数部分
a = num - 1;
} else {
sb.append("0");
a = num;
}
if (sb.length() > 34) {
System.out.println("ERROR");
return;
}
}
System.out.println(sb.toString());
}
}