python 浮点数算不准的问题

计算结果不符合预期, 如

print(94 * .01)
结果为:
0.9400000000000001

有没有方法自动的规避这种问题?
(对于上面问题可以用 round(94 * .01, 2)解决, 但是有没有默认能算的准的自动的方法)


慕少森
浏览 949回答 1
1回答

米琪卡哇伊

这个不是python的问题,是浮点数误差,计算机本身就存在这个问题,搜索引擎很多解释.我们要明确,哪怕除了这个,误差是肯定存在的,尤其是涉及到除法除不尽的时候,所以我们只能接受误差,并控制在合理范围内.避免浮点数误差的办法,可以避免使用浮点数,比如将浮点数表示为分数形式.当然我不知道这是不是真的有效,不过在这里起码是有效了.In [1]: 94*1/float(100)Out[1]: 0.94实际上这个思路就是全部转化成整数,最后在输出为浮点数而已,对这个比较敏感的一般就是涉及财务的系统,大家的方案好像也都差不太多.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python