我有numpy.float32
类型的值,以及带有dtype="float32"
的numpy数组。
当使用单个数组元素引用直接输出值的表示时,我得到的精度与输出数组对象本身的表示时的精度不同。
随后的计算也有点偏差,因此后者的值似乎是在连续的矢量/矩阵艺术中使用的。
为什么会有差异,这些精确的“异常”必须手动处理吗?
>>> a = math.pi / 2
>>> a
1.5707963267948966
>>> elementx = numpy.float32(math.cos(a))
>>> arrayx = numpy.array([elementx], dtype="float32")
>>> elementx
6.1232343e-17
>>> arrayx
array([ 6.12323426e-17], dtype=float32)
>>> t = numpy.float32(3.0)
>>> t * elementx
1.8369703e-16
>>> t * arrayx
array([ 1.83697028e-16], dtype=float32)
(Python 3.5.2,GCC 5.4.0,linux 4.4.0-21-generic)
答案 0 :(得分:2)
这些只是字符串表示的差异,值是相同的,计算也没有关闭。
>>> (t * elementx) == (t * arrayx)[0]
True