Python做浮点数(float)运算要小心

您所在的位置:网站首页 游戏辅助取名 Python做浮点数(float)运算要小心

Python做浮点数(float)运算要小心

2022-03-24 14:52| 来源: 网络整理| 查看: 265

气球象征浮点数

这个话题可以起几个标题,比如:为什么 8.5 – 8.4 不等于 0.1;怎么来证明计算机是傻X

我们先来做个计算题:7.3 – 7.2 = ?5.1 – 3.4 = ?8.5 – 8.4 = ?

上面的结果依次应该是: 0.1 1.7 0.1 对不对?

好,我们来看下Python计算出的结果是多少

浮点数相减结果

有点懵圈!结果跟我们的认知有偏差,输出结果都比真实值小了那么一丢丢。

浮点数精度问题

为什么出现这种结果?

因为这是浮点型(float)数据,计算机对浮点数的表达本身是不精确的。

因为保存在计算机中的是二进制数,二进制对有些数字不能准确表达,只能非常接近这个数。

所以我们在对浮点数做运算 和 比较大小的时候要小心,出现诡异问题,老板到时候又要捶你肉了。

在计算机编程语言中浮点数问题是个普遍问题,不只是Python。

浮点数应该怎么处理呢

把浮点数都同时精确到小数点某个位数来比较,比如同时精确到小数点后2位,后4位这样。

在Pyton中你可以使用rand()这个函数来控制浮点数精确位数,rand()函数是返回某个值四舍五入后的值。

比如上面的例子,我们使用round函数都精确到小数点后2位来看。

用python round函数精确浮点数

结果终于符合我们的预期了。

浮点数的灾难

浮点数在某些行业的运用很多,比如科学运算,比如银行业,使用的时候就要慎重,

银行里小数点比较出错,那可是白花花的银子打了水漂。

爱国者导弹因为浮点数出错

猿人学banner宣传图

我的公众号:猿人学 Python 上会分享更多心得体会,敬请关注。

***版权申明:若没有特殊说明,文章皆是猿人学 yuanrenxue.com 原创,没有猿人学授权,请勿以任何形式转载。***



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3