РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
461 of 541 menu

Атрибут nmant

Атрибут nmant класса finfo возвращает количество бит в мантиссе (значащей части числа) для заданного типа данных с плавающей запятой. Это значение характеризует точность представления чисел. Например, для типа float64 мантисса занимает 52 бита (плюс один скрытый бит), а для типа float32 - 23 бита. В отличие от атрибута iexp, который возвращает количество бит в экспоненте, nmant показывает разрядность дробной части числа. Данный атрибут полезен при низкоуровневом анализе числовых типов и при оценке точности вычислений.

Синтаксис

np.finfo(dtype).nmant

Параметры:

  • dtype - тип данных с плавающей запятой, например, float64, float32 или float16.

Возвращаемое значение:

  • Целое число (int) - количество бит в мантиссе для указанного типа.

Пример

Давайте получим количество бит в мантиссе для стандартного типа float64:

import numpy as np res = np.finfo(np.float64).nmant print(res)

Результат выполнения кода:

52

Пример

Сравним количество бит в мантиссе для разных типов с плавающей запятой:

import numpy as np mant_float64 = np.finfo(np.float64).nmant mant_float32 = np.finfo(np.float32).nmant mant_float16 = np.finfo(np.float16).nmant print(mant_float64) print(mant_float32) print(mant_float16)

Результат выполнения кода:

52 23 10

Пример

Используем атрибут nmant вместе с nexp для анализа структуры типа:

import numpy as np dtype = np.float64 info = np.finfo(dtype) mantissa_bits = info.nmant exponent_bits = info.nexp total_bits = info.bits print(f"Type: {dtype}") print(f"Mantissa bits: {mantissa_bits}") print(f"Exponent bits: {exponent_bits}") print(f"Total bits: {total_bits}")

Результат выполнения кода:

Type: float64 Mantissa bits: 52 Exponent bits: 11 Total bits: 64

Пример

Проверим, как изменяется точность представления чисел в зависимости от количества бит в мантиссе:

import numpy as np eps64 = np.finfo(np.float64).eps eps32 = np.finfo(np.float32).eps mant64 = np.finfo(np.float64).nmant mant32 = np.finfo(np.float32).nmant print(f"float64: mantissa={mant64}, eps={eps64}") print(f"float32: mantissa={mant32}, eps={eps32}")

Результат выполнения кода:

float64: mantissa=52, eps=2.220446049250313e-16 float32: mantissa=23, eps=1.1920929e-07

Смотрите также

  • атрибут nexp,
    который возвращает количество бит в экспоненте
  • атрибут bits,
    который возвращает общее количество бит в типе данных
  • атрибут eps,
    который показывает машинный эпсилон для типа
  • атрибут precision,
    который возвращает приблизительную десятичную точность
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить