我必须比较两个数字。其中一个来自regulat python 代码,另一个来自numpy。调试器显示它们具有相同的值“29.0”,但第一个float
类型是,第二个类型是float64
,所以a == b
和a - b == 0
是False
。我该如何处理?有什么方法可以强制常规 python 变量默认float64
使用或 numpy 使用?float
更新:最后所有这些值都来自29.0
写入的同一个文件,所以我认为数值没有差异。
在任何编程语言中,您都不应该将浮点数与相等性进行比较,因为您永远无法知道它们完全相等。相反,您应该测试它们的差异是否小于容差:
if abs(a - b) < 1e-10
float
所以这个问题与和之间的区别无关float64
(Python会自动转换它们),而是与比较浮点数是否相等的基本问题有关。
如果您使用的是 numpy,那么执行 Antonis 建议的最佳方法是使用 function np.allclose(a, b)
。您还可以指定公差(1e-10
从上面)。