
Python поддерживает несколько типов числовых данных, каждый из которых имеет специфический синтаксис и область применения. Основные типы – int, float, complex. Целые числа (int) могут быть записаны в десятичной, двоичной (0b), восьмеричной (0o) и шестнадцатеричной (0x) системах счисления. Например, запись 0b1010 эквивалентна 10 в десятичной системе.
Для работы с числами с плавающей точкой используется тип float. Он поддерживает стандартные десятичные дроби, экспоненциальное представление через e и комбинации с арифметическими операциями. Например, 3.14 и 1.2e3 – корректные записи float, где 1.2e3 соответствует 1200.0.
Комплексные числа обозначаются с использованием j для мнимой части. Синтаксис 2+3j позволяет одновременно хранить действительную и мнимую компоненты, что удобно для вычислений в научных и инженерных задачах. Python автоматически распознает эти типы и предоставляет встроенные методы для их преобразования и арифметических операций.
При работе с числами важно учитывать их точность и размер. Для больших целых чисел Python использует произвольную точность int, а дробные значения float ограничены машинной точностью, что может повлиять на результат вычислений. Рекомендуется использовать встроенные функции int(), float() и complex() для явного приведения типов при необходимости.
Использование целых чисел (int) для арифметических операций

Целые числа в Python представлены типом int, который поддерживает произвольную точность и автоматически масштабируется при переполнении стандартного диапазона. Это позволяет выполнять операции с очень большими числами без потери точности.
Для сложения и вычитания достаточно использовать операторы + и -. Например, 5 + 12 возвращает 17, а 20 - 7 возвращает 13. Эти операции выполняются мгновенно, независимо от размера чисел.
Умножение осуществляется оператором *, а возведение в степень – . При этом Python использует оптимизированные алгоритмы для больших чисел, поэтому 123456789 3 вычисляется корректно без переполнения.
Деление целых чисел может выполняться двумя способами: обычное деление / возвращает число типа float, даже если результат является целым, а целочисленное деление // возвращает целое число, отбрасывая дробную часть. Например, 7 / 2 даст 3.5, а 7 // 2 – 3.
Остаток от деления вычисляется оператором %. Он полезен для проверки делимости: 10 % 3 возвращает 1, а 15 % 5 – 0. Комбинируя // и %, можно полностью разложить число на делимое и остаток.
Python поддерживает составные арифметические операторы, такие как +=, -=, *=, //=, %=, что позволяет изменять переменную на месте без повторного объявления. Например, x += 5 эквивалентно x = x + 5.
При работе с отрицательными числами важно учитывать, что целочисленное деление // округляет результат вниз к меньшему числу, а остаток % сохраняет знак делителя. Например, -7 // 3 даст -3, а -7 % 3 – 2.
Для повышения читаемости больших чисел можно использовать подчеркивания в литералах: 1_000_000 интерпретируется как 1000000. Это не влияет на арифметические операции и облегчает визуальный контроль значений.
Обозначение дробных чисел с помощью float и его точность

В Python дробные числа представляются типом float, который соответствует стандарту IEEE 754 для 64-битных чисел с плавающей запятой двойной точности. Каждый float использует 1 бит для знака, 11 бит для экспоненты и 52 бита для мантиссы, что обеспечивает точность примерно до 15–17 десятичных знаков.
Создание дробного числа выполняется через запись с точкой: x = 3.1415, или через научную нотацию: y = 1.2e-4. Операции с float подчиняются правилам бинарного представления, поэтому некоторые десятичные дроби (например, 0.1 или 0.2) не могут быть представлены точно, что может приводить к незначительным ошибкам при сравнении или суммировании.
Проверка ошибок округления возможна с помощью модуля math.isclose(), который учитывает относительную и абсолютную погрешность при сравнении дробных чисел: math.isclose(a, b, rel_tol=1e-9). Это предотвращает логические ошибки при работе с числами, представленными как float.
При выполнении арифметики с float важно помнить, что точность ограничена 53 битами для мантиссы, поэтому суммы большого количества маленьких чисел или операции с сильно различающимися по порядку величины числами могут накапливать погрешность. Оптимальная практика – минимизировать цепочки операций и при необходимости использовать библиотеки для высокой точности, такие как decimal или fractions.Fraction.
Работа с комплексными числами через тип complex
В Python комплексные числа представлены типом complex. Они задаются через литерал вида 3+4j, где 3 – действительная часть, 4 – мнимая, j – обозначение мнимой единицы. Можно использовать функцию-конструктор: complex(3, 4) создает аналогичное число.
Доступ к компонентам осуществляется через атрибуты .real и .imag. Например, z = 3+4j → z.real возвращает 3.0, z.imag возвращает 4.0.
Для арифметических операций действуют стандартные правила комплексной алгебры. Сложение и вычитание выполняются по компонентам: (1+2j) + (3+4j) = 4+6j. Умножение учитывает перекрестные произведения: (1+2j)*(3+4j) = -5+10j. Деление автоматически преобразует знаменатель через сопряжение.
Сопряженное число вычисляется с помощью метода z.conjugate(), а модуль – через встроенную функцию abs(z). Для z=3+4j результат abs(z) равен 5.0, z.conjugate() возвращает 3-4j.
Комплексные числа совместимы с функциями модуля cmath, где доступны тригонометрические, экспоненциальные и логарифмические операции. Например, cmath.phase(z) возвращает аргумент числа, cmath.exp(z) – экспоненту.
Для конверсии строки в комплексное число используется complex("3+4j"). При работе с массивами комплексных чисел удобно применять библиотеки numpy и pandas, которые поддерживают комплексные типы с сохранением производительности и векторных операций.
Представление чисел в двоичной, восьмеричной и шестнадцатеричной системах
В Python числа можно представлять в разных системах счисления с помощью префиксов:
- Двоичная система (base 2) – префикс
0bили0B. Например,0b1010соответствует десятичному числу 10. - Восьмеричная система (base 8) – префикс
0oили0O. Пример:0o17соответствует десятичному числу 15. - Шестнадцатеричная система (base 16) – префикс
0xили0X. Пример:0x1Fсоответствует десятичному числу 31.
Для конвертации чисел между системами счисления используются встроенные функции:
bin(n)– возвращает строку с двоичным представлением числаn. Пример:bin(12) → '0b1100'.oct(n)– возвращает строку с восьмеричным представлением числа. Пример:oct(12) → '0o14'.hex(n)– возвращает строку с шестнадцатеричным представлением числа. Пример:hex(31) → '0x1f'.
При работе с этими функциями важно помнить:
- Возвращаемое значение – строка, поэтому для арифметических операций нужно использовать оригинальное число.
- Шестнадцатеричные цифры
a–fмогут быть как в нижнем, так и в верхнем регистре, Python допускает оба варианта при записи литералов. - Для перевода строки в число с заданной системой счисления используется
int(строка, основание). Пример:int('1010', 2) → 10,int('1f', 16) → 31.
Рекомендации при использовании:
- Для битовых операций предпочтительно использовать двоичные литералы.
- Для компактного представления больших чисел в шестнадцатеричной системе полезно для работы с памятью, цветами и кодированием.
- Восьмеричная система редко применяется, но полезна для работы с правами доступа в Unix-системах.
Использование литералов с подчеркиванием для читаемости больших чисел
В Python начиная с версии 3.6 можно использовать символ подчеркивания _ внутри числовых литералов для улучшения читаемости больших чисел. Этот прием не влияет на значение числа и полностью игнорируется интерпретатором.
Примеры применения:
population = 7_900_000_000– более читаемая запись числа населения Земли, чем7900000000.budget = 1_250_000– удобнее визуально отделять миллионы.distance_in_km = 384_400– расстояние до Луны в километрах.
Синтаксические правила:
- Подчеркивания можно ставить между цифрами, но не в начале или конце числа (
_1000и1000_недопустимы). - В десятичных числах нельзя ставить подчеркивание рядом с точкой (
1_000.0_0недопустимо). - В числах с экспонентой подчеркивание допустимо только в мантиссе и показателе отдельно (
1_000e3_2запрещено, но1_000e3– допустимо). - Подчеркивание работает и с шестнадцатеричными (
0xFF_FF), двоичными (0b1010_1010) и восьмеричными (0o12_34) литералами.
Рекомендации по использованию:
- Разделяйте цифры по тысячам или логическим группам для быстрого визуального восприятия.
- Избегайте излишнего дробления, чтобы не снижать читаемость.
- Используйте единообразный стиль во всем проекте для согласованности.
Литералы с подчеркиванием упрощают отладку, документирование и чтение кода с большими числами, особенно когда требуется точная визуальная оценка порядка величины.
Применение встроенных функций для преобразования типов чисел

В Python встроенные функции `int()`, `float()` и `complex()` позволяют изменять тип числовых данных для конкретных вычислительных задач. Функция `int()` преобразует строки или числа с плавающей точкой в целое число, отбрасывая дробную часть: int(7.9) возвращает 7, int("42") возвращает 42. Для преобразования строк с указанием системы счисления можно использовать второй аргумент: int("1011", 2) даст 11 в десятичной системе.
Функция `float()` конвертирует целые числа и строки с десятичной точкой в числа с плавающей точкой. Например, float(5) вернёт 5.0, а float("3.14") даст 3.14. При работе с финансовыми расчётами рекомендуется проверять корректность строки перед преобразованием, чтобы избежать исключений ValueError.
Функция `complex()` создаёт комплексные числа из двух чисел или строк. Синтаксис complex(2, 3) создаёт 2 + 3j, а complex("4+5j") корректно интерпретирует строковое представление. При арифметических операциях с комплексными числами Python автоматически поддерживает стандартные действия: сложение, умножение, деление и получение модуля через функцию abs().
Для безопасного преобразования рекомендуется проверять тип исходного значения с помощью isinstance() и обрабатывать исключения. Например, попытка выполнить int("3.5") вызовет ValueError, поэтому полезно предварительно использовать float(), а затем int() для последовательного преобразования.
Использование встроенных функций для приведения типов позволяет контролировать точность вычислений и предотвращает ошибки при взаимодействии различных числовых типов, особенно в сложных выражениях и при работе с пользовательским вводом.
Обозначение чисел с плавающей точкой в научной записи

В Python числа с плавающей точкой в научной записи задаются с помощью экспоненциального формата: mEn, где m – мантисса, а n – порядок числа в степени десяти. Например, 3.5e4 соответствует 35000.0, а 1.2e-3 – 0.0012.
Мантисса может содержать целую и дробную часть. Экспонента допускает положительные и отрицательные значения. Python автоматически интерпретирует запись с e или E одинаково: 7.89E2 эквивалентно 789.0.
При операциях с числами в научной записи важно учитывать точность представления: плавающая точка в Python использует 64-битный формат IEEE 754, что может приводить к незначительным погрешностям при больших и малых значениях.
Таблица основных примеров использования:
| Научная запись | Значение | Описание |
|---|---|---|
| 1e3 | 1000.0 | Целое число, преобразованное в float |
| 2.5e2 | 250.0 | Мантисса с дробной частью |
| 6.022e23 | 6.022×10²³ | Константа Авогадро |
| 1.0e-6 | 0.000001 | Малые величины в научных расчетах |
| 9.81e0 | 9.81 | Гравитационное ускорение на Земле |
Научная запись удобна для хранения и передачи очень больших и очень малых чисел, обеспечивая компактное представление и точное управление экспонентой при вычислениях.
Создание и использование констант с типом Decimal для точных вычислений

Тип Decimal из модуля decimal обеспечивает точное представление чисел и контроль над округлением. Импорт выполняется через from decimal import Decimal.
Константы рекомендуется создавать через строки, чтобы исключить ошибки float:
TAX_RATE = Decimal('0.075')
PI = Decimal('3.1415926535897932384626433832')
Для точных вычислений используется арифметика Decimal:
amount = Decimal('123.45') * TAX_RATE
amount_rounded = amount.quantize(Decimal('0.01'))
Контекст точности задается через decimal.getcontext():
from decimal import getcontext
getcontext().prec = 28
getcontext().rounding = 'ROUND_HALF_UP'
Рекомендуется хранить константы Decimal в отдельном модуле и импортировать их для повторного использования. Это повышает читаемость и исключает ошибки при масштабных вычислениях.
Вопрос-ответ:
Какие типы чисел существуют в Python и как их обозначать?
В Python есть три основных типа чисел: целые (int), числа с плавающей точкой (float) и комплексные (complex). Целые числа записываются без десятичной точки, например, 42 или -7. Числа с плавающей точкой включают десятичную часть, например, 3.14 или -0.001. Комплексные числа содержат действительную и мнимую части, при этом мнимая часть обозначается буквой j, например, 2 + 3j.
Как в Python записывать числа в разных системах счисления?
Python поддерживает десятичную, двоичную, восьмеричную и шестнадцатеричную системы. Двоичные числа записываются с префиксом 0b или 0B, например, 0b1010. Восьмеричные — с 0o или 0O, например, 0o17. Шестнадцатеричные — с 0x или 0X, например, 0x1A. Десятичные числа не требуют префикса. Такая запись удобна при работе с битами, адресами памяти или при конверсии между системами.
Можно ли использовать числовые литералы с подчеркиванием и зачем?
Да, Python позволяет использовать символ подчеркивания (_) внутри числового литерала для удобства чтения больших чисел. Например, число 1_000_000 эквивалентно 1000000, а 0b1010_1101 читается как один двоичный блок. Подчеркивания не влияют на вычисления, они служат исключительно для улучшения визуального восприятия длинных значений.
Какая разница между float и числами с экспонентой в Python?
Числа с плавающей точкой (float) могут быть записаны в стандартной десятичной форме или в экспоненциальной (научной) записи. В экспоненциальной записи используется буква e для указания степени 10. Например, 1.23e4 означает 1.23 × 10⁴, что равно 12300. Такая форма удобна для работы с очень большими или очень маленькими значениями.
Как Python воспринимает отрицательные числа и их запись?
Отрицательные числа в Python записываются с минусом перед числом, например, -42 или -3.5. При этом тип числа определяется по его структуре: без десятичной точки — целое, с точкой — число с плавающей точкой. В математических операциях Python корректно учитывает знак числа, позволяя использовать его в сложении, вычитании, умножении, делении и других операциях.
Какие форматы записи чисел поддерживает Python и чем они отличаются?
В Python можно использовать несколько форматов для записи чисел. Целые числа (int) записываются без десятичной точки, например: 42 или -7. Для чисел с плавающей точкой (float) необходимо указывать десятичную точку, например: 3.14 или -0.001. Также есть комплексные числа, которые включают реальную и мнимую части, записываются как 2+3j. Для удобства работы с системами счисления Python поддерживает запись чисел в двоичной (prefix 0b), восьмеричной (0o) и шестнадцатеричной (0x) системах. Например, 0b1010 соответствует десятичному 10, а 0xFF — десятичному 255. Каждый формат полезен в разных задачах: целые и вещественные числа применяются в математических вычислениях, а альтернативные системы счисления — при работе с битами или низкоуровневым кодом.
