首页 > 解决方案 > 添加两个 numpy.float64 数字会得到错误的结果

问题描述

我是 numpy 的新手。我试图添加两个 numpy.float64 数字,但是,numpy 给了我一个错误的答案。

这是我的代码:(a和b分别由一个numpy数组的平均值生成)

print(a)
print(type(a))
print(b)
print(type(b))
c = (a + b)/2
print(c)
print(type(c))

这就是我得到的:

1.4617937201411304
<class 'numpy.float64'>
-1.4617937201411302
<class 'numpy.float64'>
1.1102230246251565e-16
<class 'numpy.float64'>

显然,答案应该非常接近 0,但我得到的却远离 0。

我想问题是 a+b 导致了溢出?

但是,当我尝试将 a 加倍时,答案是正确的:

c = (a * 2)/2

答案是:

1.4617937201411304
<class 'numpy.float64'>
-1.4617937201411302
<class 'numpy.float64'>
1.4617937201411304
<class 'numpy.float64'>

标签: pythonnumpy

解决方案


您错过了e-16打印结束时的 。这意味着结果是1.1102230246251565 * 10^(-16),实际上几乎为零。e使用(指数)打印数字是一种惯例,而不是0.000000....1110


推荐阅读