Атрибут max класса iinfo
Атрибут max класса iinfo возвращает максимальное значение для целочисленного типа данных. Доступен только для чтения. Для знаковых типов возвращает 2^(bits-1) - 1. Для беззнаковых - 2^bits - 1. Используется для проверки возможных переполнений при операциях с целыми числами.
Синтаксис
np.iinfo(dtype).max
Пример
Получим максимальное значение для типа int32:
import numpy as np
max_val = np.iinfo(np.int32).max
print("max value for int32:", max_val)
Результат выполнения кода:
max value for int32: 2147483647
Пример
Сравним максимальные значения для разных целочисленных типов:
import numpy as np
types = [np.int8, np.int16, np.int32, np.int64]
u_types = [np.uint8, np.uint16, np.uint32, np.uint64]
print("Signed integer types:")
for t in types:
print(f"{t.__name__}: max = {np.iinfo(t).max}")
print("\nUnsigned integer types:")
for t in u_types:
print(f"{t.__name__}: max = {np.iinfo(t).max}")
Результат выполнения кода:
Signed integer types:
int8: max = 127
int16: max = 32767
int32: max = 2147483647
int64: max = 9223372036854775807
Unsigned integer types:
uint8: max = 255
uint16: max = 65535
uint32: max = 4294967295
uint64: max = 18446744073709551615
Пример
Проверка значения на допустимый диапазон:
import numpy as np
dtype = np.int16
info = np.iinfo(dtype)
value = 40000
if value <= info.max:
print(f"Value {value} fits in {dtype.__name__}")
else:
print(f"Value {value} exceeds max ({info.max}) for {dtype.__name__}")
Результат выполнения кода:
Value 40000 exceeds max (32767) for int16
Пример
Использование max для вычисления возможных переполнений:
import numpy as np
dtype = np.uint8
info = np.iinfo(dtype)
value = info.max
result = value + np.uint8(1)
print(f"Max value: {value}")
print(f"Max + 1: {result} (overflow)")
Результат выполнения кода:
Max value: 255
Max + 1: 0 (overflow)