为什么大部分浮点数字计算机中是不精确的

浮点数就是在计算机中输出的小数类型,一般用float、double类。

因为在计算机中底层是用二进制进行存储的,而我们平常使用的是十进制,所以这样就会导致在计算机中精度运算不准确。

从图中我们可以看到:定义两个浮点数,然后运行结果,得到的结果是4.69999999999,而不是我们所认为的4.7。

这就得从进制之间转换去进行更好的了解,从我们熟悉的十进制去转换成计算机所能识别的二进制。十进制小数转二进制小数首先是整数转整数,小数转小数。

对于整数部分来说:整数部分除2,直到商为0结束,得出的结果是取下往上的余数。

小数部分:小数部分使用乘2取整数位,按顺序排列,结果为零点几就输出0,结果为一点几就输出1,直到结果为1.0停止。

按我们所举得例子4.7来看:

整数部分 4 / 2 = 2 .....0 2 / 2 = 1.......0 1 / 2 = 0......1

小数部分 0.7*2=1.4 (1) 0.4*2=0.8(0) 0.8*2=1.6(1) 0.6*2=1.2 (1) 0.2*2=0.4(0)......

小数部分就会陷入无限循环中结果就变成了100.10110 0110 011......

计算机在存储小数时是有长度限制的,所以会截取部分小数进行存储,所以计算机存储的数值只能是个大概的值,而不是精确的值。这样我们就可以知道,大部分浮点数在计算机中是不精确的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值