我在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我错过了什么?
在NumPy 1.14中,浮点字符串化算法has been changed用于打印仍然舍入到原始值的最短表示,就像常规的Python浮点数一样。
这里的“最短”是有效数字,因此65500.0被认为比65504.0短。由于np.float16('65500.0')
产生相同的值,65500.0
是打印的表示。