#Z01732. 十进制小数转化为二进制小数 ( 基础 )

十进制小数转化为二进制小数 ( 基础 )

题目描述

给定n组小数 将这个十进制小数转化为二进制小数 输出这个二进制小数

十进制转换为二进制数   整数部分,把十进制数不断执行除 2 操作,直至商数为 0。读余数从下读到上,即是二进制的整数部分数字。 小数部分,则用其乘 2,取其整数部分的结果,再用计算后的小数部分依此重复计算,算到小数部分全为 0 为止,之后从上到下,读所有计算后整数部分的数字,即为二进制的小数部分数字。

比如 0.25 0.25 * 2 = 0.50      0  0.50 * 2 = 1.00      1  所以 0.25(D) = 0.01(B)

但是 0.6 就无法算完 0.60 * 2 = 1.20      1 0.20 * 2 = 0.40      0 0.40 * 2 = 0.80      0 0.80 * 2 = 1.60      1 0.60 * 2 = 1.20      1 ...... 所以也就是 0.10011... 是一个无限小数

输入格式

先输入一个 n, 表示有 n组数据 (1 接着输入 n 行数据, 每行一个小数

输出格式

输出这个二进制小数

并不是所有小数都刚好可以用2进制完全表达,浮点数都是近视的。 所以精度到1e-6就可以停止了, 也就是最后 n - (int)n 小于1e-6即可

比如 double a = 1.2; System.out.println(a - (int) a); 输出是 0.19999999999999996 并不是0.2  但是 0.19999999999999996 ≈ 0.2

建议使用"SB"

4
0.25
0.75
0.375
0.6
0.25 (D) = 0.01 (B)
0.75 (D) = 0.11 (B)
0.375 (D) = 0.011 (B)
0.6 (D) = 0.10011001100110011001100110011001100110011001100110011 (B)