python - 添加两个 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'>
解决方案
您错过了e-16
打印结束时的 。这意味着结果是1.1102230246251565 * 10^(-16)
,实际上几乎为零。e
使用(指数)打印数字是一种惯例,而不是0.000000....1110
推荐阅读
- firebase - 除非我热刷新,否则我的 cupertino Picker 不会显示儿童
- c# - 除非我先写入数据库,否则无法创建抽象类的实例
- angular - Angular 7 应用程序与 ngx-device-detector.js 存在问题
- node.js - 如何从谷歌云存储使用nodejs获取链接文件
- kubernetes - 如何在 Grafana 中查询 Pod 创建时间?
- python - 使用 initQgis() 时出现分段错误 11 - MacOS
- python - python错误:ValueError:float()的无效文字:0,69
- python - 用户对象没有客户属性
- python - 计算累积和直到出现零
- azure - 外部阶段 - Blob 与 Gen2