问题描述
为什么python浮点数(或似乎)比numpy.float64
更精确。这里我举个例子:
import numpy as np
ann = 72.595895691
detections = np.array([0,71.91000009999999],dtype=np.float64)
group_det = [1]
dist1 = [ann - detections[det] for det in group_det]
dist = np.zeros(len(group_det),dtype=np.float64)
for idx,det in enumerate(group_det):
dist[idx] = ann - detections[det]
print(f'dist1: {dist1}')
print(f'dist {dist}')
此代码的输出是:
dist1: [0.6858955910000049]
dist [0.68589559]
我的问题是为什么 dist1 具有更高的精度?
注意:代码似乎是以非常复杂的方式运行的,但是我不得不以相同的方式减少代码的一部分。
解决方法
正如@hpaulj在评论中提到的那样,它不是计算精度。正在打印。将此行添加到代码中,以查看在numpy中打印时想要的精度:
np.set_printoptions(precision=16)
在上一行之后输出代码:
dist1: [0.6858955910000049]
dist [0.6858955910000049]