计算结果不符合预期, 如print(94 * .01)结果为:0.9400000000000001有没有方法自动的规避这种问题?(对于上面问题可以用 round(94 * .01, 2)解决, 但是有没有默认能算的准的自动的方法)
1 回答
米琪卡哇伊
TA贡献1998条经验 获得超6个赞
这个不是python的问题,是浮点数误差,计算机本身就存在这个问题,搜索引擎很多解释.
我们要明确,哪怕除了这个,误差是肯定存在的,尤其是涉及到除法除不尽的时候,所以我们只能接受误差,并控制在合理范围内.
避免浮点数误差的办法,可以避免使用浮点数,比如将浮点数表示为分数形式.当然我不知道这是不是真的有效,不过在这里起码是有效了.
In [1]: 94*1/float(100)Out[1]: 0.94
实际上这个思路就是全部转化成整数,最后在输出为浮点数而已,对这个比较敏感的一般就是涉及财务的系统,大家的方案好像也都差不太多.
添加回答
举报
0/150
提交
取消