Типы чисел в языке Python

Раздел: Основы Python -> Типы данных

Числовые объекты в Python

Python предоставляет три основных встроенных числовых типа: int (целые числа), float (числа с плавающей точкой) и complex (комплексные числа). Все они являются неизменяемыми объектами, поэтому любая операция создает новый объект. Ниже рассмотрены базовые принципы, различные варианты использования и типичные ошибки.

Базовые принципы работы с числами

Числа создаются простым присваиванием. Тип определяется динамически на основе литерала. Основные арифметические операторы: +, -, *, /, // (целочисленное деление), % (остаток), ** (возведение в степень).


a = 42          # int
b = 3.14        # float
c = 1 + 2j      # complex

sum_val = a + b            # float (автоматическое приведение)
quotient = a // 5          # целочисленное деление
remainder = a % 5          # остаток
power = b ** 2             # возведение в степень

Set str python (множество из строки в python)

sum_val: 45.14 (тип float)
quotient: 8
remainder: 2
power: 9.8596 (тип float)

Python переменная время (переменные для времени в python)

Для явного преобразования между типами используются функции int(), float() и complex(). Важно помнить, что числа неизменяемы: операция a = a + 1 создает новый объект, а не изменяет старый.

Как преобразовать строку в число?

Используйте функции int() и float(). При неверном формате возникает ValueError.


s1 = "123"
s2 = "45.67"
s3 = "abc"

num1 = int(s1)
num2 = float(s2)
# num3 = int(s3)  # ValueError

Python типы данных время (типы данных для времени в python)

num1: 123 (int)
num2: 45.67 (float)
Ошибка при попытке преобразовать "abc"

Python объект тип (тип объекта в python)

Для безопасного преобразования используйте try/except.


def safe_int(s):
    try:
        return int(s)
    except ValueError:
        return None

вещественные значения python (вещественные значения в python)

Как выполнить арифметические операции с разными типами?

Python автоматически приводит операнды к более общему типу: int + float -> float, int + complex -> complex, float + complex -> complex. Целочисленное деление // всегда возвращает int, а % дает остаток.


print(10 + 2.5)    # 12.5
print(3 * (1 + 2j))  # (3+6j)
print(10 // 3)      # 3
print(10 % 3)       # 1

вывести тип данных python (вывод типа данных в python)

Как округлить число?

Встроенная функция round() округляет до заданного числа знаков (по умолчанию до целого). При округлении чисел с плавающей точкой может применяться банковское округление (округление до ближайшего четного). Для точных денежных расчетов лучше использовать модуль decimal.


print(round(3.14159, 2))  # 3.14
print(round(2.675, 2))    # 2.67 (не 2.68! из-за представления float)

Python двоичные данные (работа с двоичными данными в python)

3.14
2.67

переменная int python какая переменная (переменная int в python - что это?)

Для математического округления вверх/вниз используйте math.floor() и math.ceil().

Как проверить тип числа?

Используйте isinstance() или type(). isinstance() предпочтительнее, так как учитывает наследование.


x = 10
print(isinstance(x, int))    # True
print(isinstance(x, float))  # False
print(type(x) == int)        # True

комплексные числа в python (комплексные числа в python)

Как работать с комплексными числами?

Комплексное число создается литералом вида a + bj (мнимая часть обозначается j). Доступны атрибуты real и imag, а также метод conjugate().


z = 3 + 4j
print(z.real)      # 3.0
print(z.imag)      # 4.0
print(z.conjugate())  # (3-4j)

логические значения python (логические значения в python)

Как представить число в двоичном, восьмеричном или шестнадцатеричном виде?

Функции bin(), oct(), hex() возвращают строку с соответствующим префиксом. Обратное преобразование – int() с указанием основания.


print(bin(10))   # 0b1010
print(oct(10))   # 0o12
print(hex(255))  # 0xff
print(int('0xff', 16))  # 255

длина переменной python (длина числа и переменной в python)

Типичные ошибки и их решения

ValueError при преобразовании строки

Строка содержит символы, недопустимые для числового формата. Решение: использовать try/except или предварительно проверять строку.

TypeError: unsupported operand type(s)

Попытка выполнить операцию между числом и строкой или другим несовместимым типом. Пример: "a" + 1. Решение: явно преобразуйте операнды.

Потеря точности float при сравнении

Из-за двоичного представления числа с плавающей точкой могут быть неточными. Сравнение 0.1 + 0.2 == 0.3 даст False. Решение: использовать math.isclose() или модуль decimal.


import math
print(math.isclose(0.1 + 0.2, 0.3))  # True

определение объекта python (определение типа объекта в python)

ZeroDivisionError при делении на ноль

Деление целого или float на ноль вызывает ошибку. Решение: проверять делитель перед операцией.


def safe_divide(a, b):
    if b == 0:
        return float('inf')  # или None, или вернуть 0
    return a / b

определение типа данных python (определение типов данных в python)

Некорректное округление с round()

Из-за особенностей представления float round(2.675, 2) возвращает 2.67 вместо 2.68. Решение: использовать decimal.Decimal с точностью или округление через quantize().


from decimal import Decimal, ROUND_HALF_UP
print(Decimal('2.675').quantize(Decimal('0.01'), rounding=ROUND_HALF_UP))  # 2.68
- числа с плавающей запятой python (числа с плавающей запятой в python)
- является ли числом python (проверка, является ли значение числом в python)
- Python пустые значения (пустые значения в python)

Расширенные примеры работы с числовыми объектами

Пример 1: Работа с большими целыми числами (длинная арифметика)

В Python тип int не имеет ограничения по разрядности, что позволяет выполнять точные вычисления с большими числами.

Пример

a = 2 ** 1000
print(a)
10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376

Длинная арифметика полезна в криптографии, научных расчетах и алгоритмах с большими числами.

Пример 2: Методы float

Тип float содержит полезные методы: as_integer_ratio() возвращает кортеж из двух целых (числитель и знаменатель), is_integer() проверяет, является ли число целым, hex() и fromhex() для работы с шестнадцатеричным представлением IEEE 754.

Пример

x = 0.75
print(x.as_integer_ratio())  # (3, 4)
print(x.is_integer())        # False
print(x.hex())               # 0x1.8000000000000p-1
(3, 4)
False
0x1.8000000000000p-1

Метод fromhex() создает float из строки шестнадцатеричного представления.

Пример

print(float.fromhex('0x1.8p-1'))  # 0.75

Пример 3: Комплексные числа в полярной форме

Модуль cmath предоставляет функции для работы с полярными координатами: polar() (модуль и фаза) и rect() (прямоугольная форма).

Пример

import cmath

z = 1 + 1j
r, phi = cmath.polar(z)
print(f"Модуль: {r}, фаза: {phi}")  # Модуль: 1.4142135623730951, фаза: 0.7853981633974483

# Обратное преобразование
z2 = cmath.rect(r, phi)
print(z2)  # (1.0000000000000002+1j)

Пример 4: Точные вычисления с модулем decimal

Модуль decimal позволяет работать с числами с плавающей точкой с заданной точностью, избегая ошибок представления binary float.

Пример

from decimal import Decimal, getcontext

getcontext().prec = 28  # установка точности
a = Decimal('0.1')
b = Decimal('0.2')
print(a + b)  # 0.3 (точно)
print(Decimal(1) / Decimal(3))  # 0.3333333333333333333333333333
0.3
0.3333333333333333333333333333

Decimal особенно полезен для финансовых расчетов, где требуется строгое округление.

Пример 5: Рациональные числа с модулем fractions

Модуль fractions реализует рациональные числа (дроби) с точными арифметическими операциями.

Пример

from fractions import Fraction

frac1 = Fraction(1, 3)
frac2 = Fraction(2, 5)
sum_frac = frac1 + frac2
print(sum_frac)  # 11/15
print(float(sum_frac))  # 0.7333333333333333

Рациональные числа полезны при решении задач, требующих точного представления дробей (комбинаторика, математический анализ).

Пример 6: Битовые операции над целыми числами

Целые числа поддерживают битовые операторы: & (И), | (ИЛИ), ^ (исключающее ИЛИ), << (сдвиг влево), >> (сдвиг вправо), ~ (инверсия).

Пример

a = 0b1100  # 12
b = 0b1010  # 10
print(bin(a & b))   # 0b1000 (8)
print(bin(a | b))   # 0b1110 (14)
print(bin(a ^ b))   # 0b0110 (6)
print(bin(a << 2))  # 0b110000 (48)
print(bin(a >> 2))  # 0b0011 (3)
0b1000
0b1110
0b110
0b110000
0b11

Битовые операции часто используются в системном программировании, работе с флагами и шифровании.

Пример 7: Округление с Decimal и контекстом

Метод quantize() модуля Decimal позволяет гибко настраивать округление. Ниже приведен пример с ROUND_HALF_UP (математическое округление).

Пример

from decimal import Decimal, ROUND_HALF_UP, ROUND_DOWN

val = Decimal('2.675')
print(val.quantize(Decimal('0.01'), rounding=ROUND_HALF_UP))  # 2.68
print(val.quantize(Decimal('0.01'), rounding=ROUND_DOWN))    # 2.67
2.68
2.67

Это решает проблему неожиданного округления, присущую round() для float.

Пример 8: Преобразование чисел в разные системы счисления и обратно

Функции bin(), oct(), hex() возвращают строки с префиксами. int() со вторым аргументом выполняет обратное преобразование из любой системы счисления.

Пример

num = 255
print(bin(num))   # 0b11111111
print(oct(num))   # 0o377
print(hex(num))   # 0xff

# Обратно
print(int('0b11111111', 2))  # 255
print(int('0o377', 8))       # 255
print(int('0xff', 16))       # 255

Также можно использовать пользовательские системы, например, основание 5:

Пример

print(int('11111', 5))  # 1*5^4 + 1*5^3 + ... = 781
781

Числовые объекты в Python - comments

En
Python объекты чисел (python)