为什么计算机中大部分小数是不精确的?

        在计算机中,数字的运算与存储都是通过二进制的方式进行的,所有的数字都是通过“十进制转二进制”的方式在计算机中显示的。


十进制小数转二进制小数的方法是:(整数部分转整数部分,小数部分转小数部分

小数部分转小数部分的方法为:

具体操作方法为: 

  1. 小数部分乘以二,得到一个乘积,取乘积的整数部分;(若整数部分的乘积n,则取n)
  2. 乘积的小数部分再次乘以2,得到又一个乘积,取这一次乘积的整数部分;
  3. 按照上面的“乘2取乘积整数”,一直取值,直至乘积的小数部分为零时,结束;
  4. 将上述步骤中的整数值依次从左至右排列,此结果为该小数的二进制。 

例1:

0.125转二进制:

运算小数部分整数部分取值
0.125*2=0.250.2500
0.25*2=0.50.500
0.5*2=1.0011

取值顺序相加得到0.125的二进制为:0.0010 0000

例2:

0.1转二进制:

运算小数部分整数部分取值
0.1*2=0.20.200
0.2*2=0.40.400
0.4*2=0.80.800
0.8*2=1.60.611
0.6*2=1.20.211
0.2*2=0.40.400
0.4*2=0.80.800
0.8*2=1.60.611
0.6*2=1.20.211

通过取值部分可以看出,0.1的出现了无限循环的情况

取值顺序相加得到0.125的二进制为:0.0001 1001 1001 1001......

由0.1转二进制可以看出,计算机无法准确存储0.1的二进制,其他小数同理。


 原因表述:

 计算机中十进制小数在转换为二进制时,采用的是“乘2取整,直至为零,结果顺序排列”的方法,在进行转换的时候会产生无限循环的情况,得到的二进制是一个无限接近于原值的近似值,所以导致了“大部分小数不精确”的情况。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值