#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)
豫公网安备41072702000346号