比较python中的`float`和`float64`

时间:2013-08-07 15:05:33

标签: python numpy

我必须比较两个数字。其中一个来自custt python代码,另一个来自numpy。调试器显示它们具有相同的值'29 .0',但第一个类型为float,第二个类型为float64,因此a == ba - b == 0False。我怎么处理它?有什么办法吗? 强制常规python变量为float64或numpy默认使用float

更新:所有这些值的末尾来自写入29.0的同一文件,因此我认为数值不存在差异。

2 个答案:

答案 0 :(得分:18)

你不应该用任何编程语言来比较浮点数是否相等,因为你永远不会知道它们完全相同。相反,您应该测试它们的差异是否小于容差:

if abs(a - b) < 1e-10

所以这个问题与floatfloat64(Python自动转换它们)之间的区别没有关系,但是存在比较浮点数是否相等的基本问题。

另见What's wrong with using == to compare floats in Java?

答案 1 :(得分:8)

如果您正在使用numpy,那么执行Antonis建议的最佳方法是使用函数np.allclose(a, b)。您还可以指定容差(上面的1e-10)。

相关问题