Да, это просто для отображения параметров.Формат хранения чисел не изменяется.Из документации numpy.set_printoptions()
:
Эти параметры определяют способ отображения чисел с плавающей запятой, массивов и других объектов NumPy , отображаемых .
(выделение жирным шрифтом)
64-разрядное число с плавающей запятой имеет 53 бита значимости и точности , поэтому наименьшая двоичная дробь равна 2 ^ -52 или 2.220446049250313e-16
;около 16 десятичных цифр, поэтому выход за пределы np.set_printoptions(precision=16)
, вероятно, не имеет особого смысла.
Обратите внимание, что настройка для floatmode
также имеет значение;по умолчанию 'maxprec_equal'
, что означает, что количество отображаемых цифр зависит от фактических значений в вашем массиве;если вы установите precision=16
, но все значения вашего массива могут быть однозначно представлены только с 4 десятичными знаками, то numpy не будет использовать больше.Только если floatmode
установлен на 'fixed'
, он будет придерживаться большей точности.
В том, что означает уникально представляет числа с плавающей запятой: потому что числа с плавающей запятой аппроксимация с использованием двоичных дробей, существует целый ряд действительных чисел, все из которых приведут к одинаковому представлению с плавающей запятой, например, 0,5 и 0,50000000000000005 оба получат двоичное значение 00111111000000000000000000000000
.Numpy стремится найти наименьшее количество десятичных цифр, которое может представлять число с плавающей запятой, а затем показать это вам.