我必须比较两个数字。其中一个来自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从上面)。