这个话题可以起几个标题,比如:为什么 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 上会分享更多心得体会,敬请关注。
***版权申明:若没有特殊说明,文章皆是猿人学 yuanrenxue.con 原创,没有猿人学授权,请勿以任何形式转载。***
说点什么吧...