计算机计算时 用的是二进制,所以任何数都转化为二进制,然后才能计算
但是小数转化为二进制就出问题了:
如何出问题的:
我们知道小数转化为二进制,是小数位不停的乘以2,知道所有的 小数位都为0 ,
但是在数学中,与2相乘 能进一,且低位 变为0的只有5
所以,最低位 必须是5,其他位通过 低位 与2相乘后 能够变成5,计算机才可以准确的表示原来的数
我们实际生活中二进制,上述情况很少。以0.1 为例,不停地乘以2,小数位就在2 4 8 6 进行循环
但是用java测试,发现加法比较准,乘除减法都有误差,底层是怎么实现的,求大神指点一二,加法试了很多次,都是准确的,减法就有误差,求解,还有乘除法底层是怎么是实现的求思路
而在c语言中简单试了几个,似乎加减乘除都没有误差