python计算489.43-488.83=0.6000000000000227?多余的数哪来的?

问题引发

python计算489.43-488.83=0.6000000000000227?多余的数哪来的?

为什么使用Python计算489.43-488.83=0.6000000000000227?

问题解答

电脑存储小数的方式导致的精度问题。

一个小数在电脑里通常只占数个字节(4/8/10较为常见),这么点空间当然存不下所有的小数,或者换句话说现实中小数的数量是无限的,有0.1也可以有0.01,还可以有0.001,当然还能有0.000000000001。

而在这几个字节中存储常用的小数,只能是离散的,举个例子,虽然这个例子稍微有点脱离现实。每隔0.0003一个数 ,那么就可以有0.0003/0.0006/0.0009 …… ,这种情况下如果你要表达0.0005,那只能是最近似的值选0.0006了。你这个情况就是类似这种,电脑表示不出精确的0.6,就只能是最近似的值了。

参考:https://docs.python.org/3/tutorial/floatingpoint.html

最后多说一句,小编是一名python开发工程师,这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。想要这些资料的可以关注小编,并在后台私信小编:“01”即可领取。


分享到:


相關文章: