为什么numpy 1.14将float16 65504换为65500

时间:2018-07-04 06:22:33

标签: python numpy

我在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我缺少什么?

1 个答案:

答案 0 :(得分:5)

在NumPy 1.14中,浮点字符串化算法has been changed可以打印仍舍入为原始值的最短表示形式,就像常规的Python float一样。

这里的“最短”是指有效数字,因此65500.0被认为比65504.0短。由于np.float16('65500.0')产生相同的值,因此65500.0是要打印的表示形式。