《二进制小数》题目分析
十进制小数转二进制小数我们可以模拟“乘2减1”的手算过程。例如对于0.6875,这个“乘2减1”的过程是这样的,每次将当前小数乘以2,如果结果大于等于1,那么将结果减1:
0.6875
x 2
=1.375 减去整数部分 1
0.375
x 2
=0.75 减去整数部分 0
0.75
x 2
=1.5 减去整数部分 1
0.5
x 2
=1.0 减去整数部分 1
0 结束
经过4次“乘2减1”的操作,结果变为0。我们依次减去的整数部分是1011,所以对应的二进制小数就是0.1011。
假设X的小数部分有N位,如果我们经过N次操作结果仍不为0,那么X就不能表示成有限位数的二进制小数。
考虑到X的小数部分可能有100位,我们实现这个模拟手算的过程需要用“高精度”计算的方法:用一个数组去保存每一位数字,然后按位进行乘以2的操作。
是5也不一定,如0.005,不能表示成二进制,不是5倒可以直接输出