题目:
输入任意一个0-1之间的浮点数,转为2进制数
如果小数点后32位无法精确表示 则输出 ERROR
小数点后用二进制表示为,右移2 即0.5 二进制表示 0.1,0.25表示0.01
0.625 即为 0.101
两个样例:
输入:
0.625 或 0.3
输出:
0.101 或 ERROR
tip:
已知十进制整数 转为二进制数,除二取余。可以思考十进制小数可以乘2取整,
即每次乘2,如果大于1则在当前小数点后位进1,直到取整后为0.
演示过程:
0.625*2
1.25 -- 0.1
0.25*2
0.5 -- 0.10
0.5*2
1.0 -- 0.101
结果 0.101
(Java代码如下)
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double n = sc.nextDouble();
//字符串拼接
StringBuilder sb = new StringBuilder("0.");
while(n > 0) {
n *= 2;
if(n >= 1) {
sb.append("1");
n--;
}else {
sb.append("0");
}
if(sb.length() > 34) {//32+2
System.out.println("ERROR");
return;
}
}
System.out.println(sb.toString());
}