为什么计算机中的小数位无法精确

本文详细介绍了如何将十进制数43.21转换为二进制形式101011.0011,并反过来将二进制数转换回十进制的过程。通过具体步骤展示,帮助读者理解计算机内部数值表示的基本原理。

https://github.com/wmui/blog/issues/1
想搞清这个问题,首先要明白十进制和二进制的转换关系
以数字43.21转换为二进制进行说明

43/2=21...1
21/2=10...1
10/2=5...0
5/2=2...1
2/2=1...0
1/2=0...1
整数部分:101011
总结:不断除以基数(2进制的基数是2),倒序取余数,110101

0.212=0.42 ...0
0.42
2=0.84 ...0
0.842=1.68 ...1
0.68
2=1.36 ...1
0.36*2=0.72 ...0
...
(一直计算到0.72为0.00停止,就会得到精确数,这也是为什么计算机在小数计算上出现误差的原因)
小数部分:0.00110
总结: 不断乘以基数,正序取整数部分进位,00110
结果:(43.21)10 约等于 (101011.0011)2

二进制转十进制
整数部分:
101011=122222+0+1222+0+12+1=43
小数部分:
0.0011=0
(1/2)+0(1/4)+1(1/8)+1*(1/16)=0.1875
结果:43.1875 (101011.0011)2 约等于 (43.21)10
总结:整数位从右至左,依次乘以2的0次方,2的一次方。小数位从左至右,以此乘以2的-1次方,2的-2次方
一图胜千言,最快的二进制转十进制方法
1027889-20171021211702318-745138146.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值