Java算法–第一章–位运算符(7)0~1间浮点实数的二进制表示
题目:给定一个介于0和1之间的实数,(如0.625),类型为double,打印他的二进制表示(0.101,因为小数点后的二进制分别表示0.5,0.25,0.125……)。
如果该数字无法精确的用32位以内的二进制表示,则打印“ERROR”
代码:
package exer1;
public class 零一间浮点实数的二进制表示 {
public static void main(String[] args) {
double num = 0.625;
StringBuilder sb = new StringBuilder("0.");
while(num > 0){
//乘2
double r = num*2;
//判断整数部分
if(r>=1){
//追加1
sb.append("1");
//消掉整数部分
num = r-1;
}else{
sb.append("0");
num = r;
}
if(sb.length()>34){
System.out.println("ERROR ");
return;
}
}
System.out.println(sb.toString());
}
}
输出:
0.101