一个简单计算,输出有点不明白

为什么输入90时,输出的这么怪异
图片说明

并非只有输入90是这样,不信你一个一个去试。或者写一个循环去试。你测试的数量太少。

浮点数存在两个误差,一个叫做尾数误差,浮点数用一定长度的二进制数表示尾数,而不是精确值,存在误差,在进行四则运算的时候,这个误差可能放大。
用10进制举例:比如说我们用4位小数表示一个数字:0.1234,我们做如下运算 0.1234/10*10,因为尾数只有4位,所以0.1234/10=0.0123(而不是0.01234)
再*10结果就是0.123,那么就出现误差了。

另一个是进制转换误差。浮点数在计算机内是二进制表示的。像你程序中的0.1 0.015 0.6,都会变成二进制的无限循环小数。比如0.1,它就是
0.000110011001100110011...(0011循环),之前说了,浮点数只能用固定的尾数表示,那么要么我们必须舍去超过长度的尾数(这会让计算结果偏小),要么必须四舍五入进位(这又会让结果偏大)。

因为以上原因,所以结果出现略微偏大、偏小。

但是为什么不是总是偏大偏小呢?这要看你最终结果的误差偏差是多少,如果误差小,那么在输出结果的时候无法体现出来,所以只有一部分的结果会出现误差。

计算机存储是二进制,无法表述一些十进制,比如0.3
遇到这种情况,可以使用Decimal模块