为什么numpy 1.14轮float16 65504到65500

问题描述 投票:3回答:1

我在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我错过了什么?

python numpy
1个回答
5
投票

在NumPy 1.14中,浮点字符串化算法has been changed用于打印仍然舍入到原始值的最短表示,就像常规的Python浮点数一样。

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

© www.soinside.com 2019 - 2024. All rights reserved.