为什么计算机中的小数计算有误差

计算机计算时 用的是二进制,所以任何数都转化为二进制,然后才能计算

但是小数转化为二进制就出问题了:

如何出问题的:

我们知道小数转化为二进制,是小数位不停的乘以2,知道所有的 小数位都为0 ,

但是在数学中,与2相乘  能进一,且低位 变为0的只有5

所以,最低位 必须是5,其他位通过  低位 与2相乘后  能够变成5,计算机才可以准确的表示原来的数

 

我们实际生活中二进制,上述情况很少。以0.1 为例,不停地乘以2,小数位就在2 4 8 6 进行循环

 

但是用java测试,发现加法比较准,乘除减法都有误差,底层是怎么实现的,求大神指点一二,加法试了很多次,都是准确的,减法就有误差,求解,还有乘除法底层是怎么是实现的求思路

而在c语言中简单试了几个,似乎加减乘除都没有误差

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值