我在Windows上使用numpy 1.14.2运行以下代码
print(np.array(65504, dtype=np.float16))
我得到结果65500.0
。
但是运行finfo(np.float16)
会得到以下输出:
Machine parameters for float16
---------------------------------------------------------------
precision = 3 resolution = 1.00040e-03
machep = -10 eps = 9.76562e-04
negep = -11 epsneg = 4.88281e-04
minexp = -14 tiny = 6.10352e-05
maxexp = 16 max = 6.55040e+04
nexp = 5 min = -max
---------------------------------------------------------------
它显示的最大值为65504。我用numpy 1.13运行相同的代码,它显示65504.0。
numpy 1.14我缺少什么?
答案 0 :(得分:5)
在NumPy 1.14中,浮点字符串化算法has been changed可以打印仍舍入为原始值的最短表示形式,就像常规的Python float一样。
这里的“最短”是指有效数字,因此65500.0被认为比65504.0短。由于np.float16('65500.0')
产生相同的值,因此65500.0
是要打印的表示形式。