Найти в Дзене

Числа в Python: системы счисления, операции, сравнения и деление

Python предоставляет богатый набор возможностей для работы с числами. В этой статье разберем синтаксис чисел в разных системах счисления, операции с разными типами, сравнения и особенности деления. Стандартный формат для целых и вещественных чисел: a = 42 # int b = 3.14 # float c = 1_000_000 # int с разделителем для удобства (Python 3.6+) Используют префикс 0x: hex_num = 0x1A # 26 в десятичной системе print(hex_num) # 26 Префикс 0o (Python 3+): oct_num = 0o12 # 10 в десятичной системе print(oct_num) # 10 Префикс 0b: bin_num = 0b110 # 6 в десятичной системе print(bin_num) # 6 Для преобразования чисел в строку в разных системах: print(bin(10)) # '0b1010' print(hex(255)) # '0xff' print(oct(8)) # '0o10' Python автоматически преобразует типы при смешанных операциях: - int + float → float - int/float + complex → complex print(3 + 4.5) # 7.5 (float) print(2 * 3.0) # 6.0 (float) print(5 + 2j) # (5+2j) (complex) Важно: При делении / результат всегда float, д
Оглавление

Python предоставляет богатый набор возможностей для работы с числами. В этой статье разберем синтаксис чисел в разных системах счисления, операции с разными типами, сравнения и особенности деления.

Системы счисления: синтаксис чисел

1. Десятичные (Decimal)

Стандартный формат для целых и вещественных чисел:

a = 42 # int
b = 3.14 # float
c = 1_000_000 # int с разделителем для удобства (Python 3.6+)

2. Шестнадцатеричные (Hexadecimal)

Используют префикс 0x:

hex_num = 0x1A # 26 в десятичной системе
print(hex_num) # 26

3. Восьмеричные (Octal)

Префикс 0o (Python 3+):

oct_num = 0o12 # 10 в десятичной системе
print(oct_num) # 10

4. Двоичные (Binary)

Префикс 0b:

bin_num = 0b110 # 6 в десятичной системе
print(bin_num) # 6

Для преобразования чисел в строку в разных системах:

print(bin(10)) # '0b1010'
print(hex(255)) # '0xff'
print(oct(8)) # '0o10'

Операции с разными типами

Python автоматически преобразует типы при смешанных операциях:

- int + float → float

- int/float + complex → complex

Примеры:

print(3 + 4.5) # 7.5 (float)
print(2 * 3.0) # 6.0 (float)
print(5 + 2j) # (5+2j) (complex)

Важно: При делении / результат всегда float, даже если числа целые:

print(4 / 2) # 2.0 (float)

Сравнение чисел

1. Обычные сравнения:

Используйте операторы ==, !=, <, >, <=, >=:

x = 5
print(3 < x <= 10) # True (двойное сравнение)
print(x == 5.0) # True (значения равны, типы игнорируются)
print(0.1 + 0.2 == 0.3) # False (из-за погрешности float)

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

from decimal import Decimal
print(Decimal('0.1') + Decimal('0.2') == Decimal('0.3')) # True

2. Цепные сравнения (Chained Comparisons)

Python позволяет объединять условия:

# Эквивалентно: (1 < x) and (x < 5)
x = 3
print(1 < x < 5) # True

Типы деления

1. Обычное (True) деление (/)

Всегда возвращает float, даже при делении целых чисел:

print(5 / 2) # 2.5
print(4 / 2) # 2.0

2. Целочисленное (Floor) деление (//)

Возвращает целую часть, округляя вниз:

print(5 // 2) # 2 (int)
print(-5 // 2) # -3 (округляет в меньшую сторону)
print(7.8 // 2) # 3.0 (float)

3. Деление по модулю (%)

Возвращает остаток от деления:

print(5 % 2) # 1
print(10 % 3) # 1
print(-5 % 2) # 1 (по формуле: a = b * (a // b) + a % b)

Примеры комбинаций:

quotient, remainder = divmod(10, 3)
print(quotient) # 3
print(remainder) # 1

Особенности чисел в Python

1. Большие числа

Поддержка чисел произвольной точности:

big_num = 2 ** 1000 # 1071508607186267320948... (301 цифра)

2. Модуль math

Для сложных операций:

import math
print(math.sqrt(16)) # 4.0
print(math.floor(3.7)) # 3
print(math.ceil(3.2)) # 4

3. Точные десятичные дроби

Используйте Decimal для финансовых расчетов:

from decimal import Decimal
print(Decimal('0.1') + Decimal('0.2')) # 0.3

Заключение

1. Системы счисления:

- Шестнадцатеричные (0x), восьмеричные (0o), двоичные (0b).

- Используйте bin(), hex(), oct() для преобразований.

2. Смешанные операции:

- Python автоматически повышает типы (int → float → complex).

- Деление / всегда возвращает float.

3. Сравнения:

- Цепные сравнения (1 < x < 5) упрощают код.

- Для точных расчетов с плавающей точкой используйте Decimal.

4. Деление:

- / — истинное деление.

- // — целочисленное (с округлением вниз).

- % — остаток от деления.

Советы:

- Для проверки типа числа используйте isinstance(x, int).

- Избегайте сравнения float на равенство из-за погрешностей.

- Используйте _ в больших числах для удобства чтения (например, 1_000_000).