python - 浮点除法返回奇怪的结果
问题描述
我试图做一个项目,出于某种原因,相同的部门给了我不同的结果。我正在尝试检查 2 个部门是否相等并给我相同的结果,但是当我尝试5.99/1
并且0.599/0.1
脚本说它们不同时,它们应该返回相同的结果。我想出了问题所在,5.99/1 = 5.99
但0.599/0.1 = 5.989999999999999
我找不到解决方法。
解决方案
您可以在此答案中找到原因: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
正如您在下面看到的,我已将除法的结果转换为格式化的字符串,并检查它们而不是默认的浮动类型。
推荐阅读
- javascript - JavaScript:如何在继续执行之前等待相机访问?
- javascript - 为什么 React 中的 JavaScript 方法是未定义的?
- xamarin.forms - ipa 和 apk 包中缺少文件
- liquibase - liquibase:我可以通过引用先前的变更集 id 来回滚删除表吗?
- jarsigner - Jar 签名者:无法打开 jar 文件
- c++ - 埃拉托色尼筛。不确定如何准确实施
- python - 如果值相同,则合并两个字典列表
- firebase - FirebaseUI 与 Firestore 使用 React 和 firebase.js 文件
- spring-cloud-sleuth - 使用spring cloud sleuth和brave时,parentId如何相同?
- node.js - song_queue.connection.play 不是函数