Олег Марков
Работа с большими числами в Python
Введение
В некоторых приложениях требуется работа с числами, которые выходят за пределы стандартных типов данных или требуют высокой точности — например, финансовые расчёты, криптография или научные вычисления. Python предоставляет возможности для работы с большими числами, включая встроенные типы и библиотеки для точных вычислений. В этой статье мы разберём, как эффективно работать с большими числами в Python.
Встроенный тип int и его возможности
В Python 3 тип int не имеет фиксированного размера — это позволяет работать с числами практически любой величины:
big_num = 10**50
print(big_num)
print(type(big_num)) # <class 'int'>Такая особенность позволяет выполнять арифметические операции с очень большими числами без риска переполнения.
Арифметика с большими числами
Операции с большими числами выполняются так же, как с обычными int:
a = 10**20
b = 10**25
print(a + b) # 10001000000000000000000000
print(a * b) # 1000000000000000000000000000000000000000000000Python автоматически управляет памятью для больших чисел.
Работа с десятичной точностью
Для финансовых или точных вычислений лучше использовать модуль decimal, который позволяет контролировать точность и избегать ошибок при работе с плавающей точкой:
from decimal import Decimal, getcontext
getcontext().prec = 50 # задаём точность
x = Decimal('1.123456789123456789')
y = Decimal('2.987654321987654321')
print(x + y) # 4.111111111111111110Модуль decimal полезен для высокоточных операций, где стандартный float может дать неточный результат.
Если вы хотите детальнее погрузиться в работу с числами и арифметику в Python — приходите на наш курс Основы Python. На курсе 209 уроков и 34 упражнения, AI-тренажёры для безлимитной практики с кодом и задачами 24/7, решение задач с живым ревью наставника и еженедельные встречи с менторами. Это поможет закрепить навыки работы с большими числами и точными вычислениями.
Использование модуля math и pow
Для больших чисел иногда применяются функции модуля math или встроенная функция pow:
import math
print(pow(2, 100)) # 1267650600228229401496703205376
print(math.factorial(50)) # 30414093201713378043612608166064768844377641568960512000000000000pow и math.factorial позволяют выполнять вычисления с очень большими числами без ручного написания алгоритмов.
Частые ошибки
- Использование
floatдля больших чисел — может привести к потере точности. - Ошибки при конвертации строк в числа без учета размера.
- Игнорирование необходимости модуля
decimalдля точных вычислений.
Частозадаваемые вопросы
Можно ли использовать обычный int для чисел с сотнями цифр?
Да, Python автоматически управляет памятью и позволяет работать с числами любой длины.
Как избежать ошибок округления при больших числах?
Использовать модуль decimal и задавать необходимую точность.
Можно ли комбинировать int и Decimal в вычислениях?
Да, но желательно привести все значения к одному типу для точных вычислений.
Заключение
Python предоставляет мощные инструменты для работы с большими числами: неограниченный int, модуль decimal для точной арифметики и функции модуля math. Эти возможности позволяют решать задачи с высокой точностью и выполнять вычисления с числами любой величины.
Для закрепления навыков работы с большими числами и арифметикой в Python рекомендуется курс Основы Python. В первых трёх модулях доступно бесплатное содержание, что позволяет попробовать методы на практике и понять структуру курса до покупки полного доступа.
Постройте личный план изучения Python до уровня Middle — бесплатно!
Python — часть карты развития Backend
100+ шагов развития
30 бесплатных лекций
300 бонусных рублей на счет
Все гайды по Python
Лучшие курсы по теме

Основы Python
Антон Ларичев
Nest.js с нуля
Антон Ларичев