Почему NumPy 1,14 раундов плавают16 65504 до 65500 - PullRequest
0 голосов
/ 04 июля 2018

Я запускаю следующий код с numpy 1.14.2 в Windows

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 голосов
/ 04 июля 2018

В NumPy 1.14 алгоритм строкового преобразования с плавающей точкой был изменен для печати кратчайшего представления, которое все еще округляется до исходного значения, как обычные числа Python.

«Кратчайший» здесь в значимых цифрах, поэтому 65500.0 считается короче 65504.0. Поскольку np.float16('65500.0') выдает одно и то же значение, 65500.0 - это представление, которое выводится на печать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...