问题:
给定一个介于0和1之间的实数,
(0.65),类型为double,打印它的二进制表示(0.101
因为小数点后的二进制分别表示0.5,0.25,0.125...)
如果该数字无法精确地用32位以内的二进制表示
则打印"ERROR"
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
Double num=input.nextDouble();
System.out.println();
StringBuffer sb=new StringBuffer("0.");
while(num>0){
num=num*2;
if(num>=1){
sb.append("1");
num=num-1;
}else if(num>0&&num<1){
sb.append("0");
}
}
if (sb.toString().length()>=32) {
System.out.println("ERROR");
}else{
System.out.println(sb);
}
input.close();
}
}