0.1+0.2=0.30000000000000004
看下效果
这个网站能找到你想要的答案
https://0.30000000000000004.com/
十进制转二进制
十进制整数转换为二进制整数采用"除2取余,逆序排列"法。
具体做法是:
- 用2整除十进制整数,可以得到一个商和余数;
- 再用2去除商,又会得到一个商和余数,如此进行,直到商为小于1时为止
- 然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。
除数 | 除 | 被除数 | 等于 | 结果 | 余 | 余数 |
---|---|---|---|---|---|---|
127 | / | 2 | = | 63 | 余 | 1 |
63 | / | 2 | = | 31 | 余 | 1 |
31 | / | 2 | = | 15 | 余 | 1 |
15 | / | 2 | = | 7 | 余 | 1 |
7 | / | 2 | = | 3 | 余 | 1 |
3 | / | 2 | = | 1 | 余 | 1 |
1 | / | 2 | = | 0 | 余 | 1 |
最终转换成2进制的结果:1111111
十进制小数转换成二进制小数
十进制小数转换成二进制小数采用"乘2取整,顺序排列“法。
具体做法是:
- 用2乘十进制小数,可以得到积
- 将积的整数部分取出,再用2乘余下的小数部分,又得到一个积
- 再将积的整数部分取出,如此进行,直到积中的小数部分为零,此时0或1为二进制的最后一位。或者达到所要求的精度为止。
乘数 | 乘 | 乘数 | 等于 | 结果 | 整数部分 |
---|---|---|---|---|---|
0.625 | * | 2 | = | 1.25 | 1 |
0.25 | * | 2 | = | 0.5 | 0 |
0.5 | * | 2 | = | 1.0 | 1 |
最终转换成2进制的结果:0.101
但不是所有的小数都可以用二进制表示,比如0.1
得到的结果0.000110011001100........ 出现了无限循环的情况