首页 > 解决方案 > 浮点除法返回奇怪的结果

问题描述

我试图做一个项目,出于某种原因,相同的部门给了我不同的结果。我正在尝试检查 2 个部门是否相等并给我相同的结果,但是当我尝试5.99/1并且0.599/0.1脚本说它们不同时,它们应该返回相同的结果。我想出了问题所在,5.99/1 = 5.990.599/0.1 = 5.989999999999999我找不到解决方法。

标签: pythonpython-3.xfloating-point

解决方案


您可以在此答案中找到原因:https ://stackoverflow.com/a/588014/11502612

我已经为你写了一个可能的解决方案:

代码:

a = 5.99 / 1
b = 0.599 / 0.1
a_str = "{:.4f}".format(5.99 / 1)
b_str = "{:.4f}".format(0.599 / 0.1)

print(a, b)
print(a_str, b_str)
print(a == b)
print(a_str == b_str)

输出:

>>> python3 test.py 
5.99 5.989999999999999
5.9900 5.9900
False
True

正如您在下面看到的,我已将除法的结果转换为格式化的字符串,并检查它们而不是默认的浮动类型。


推荐阅读