Я пытаюсь найти способ написать 21 * (10 ^ 21) в Python. Я пробовал два подхода. Первый просто делает следующее:
>>> print(21*(10**21))
21000000000000000000000
Это работает просто отлично. Однако проблема, которую я пытаюсь решить, требует от меня итерации к этому числу, то есть путем наращивания от 1 * (10 ^ 1) до 21 * (10 ^ 21). Поэтому я попробовал следующее:
>>> temp = 20*(10**20)
>>> print(21*temp*10/20)
2.1e+22
Теперь я хочу, чтобы отображалось все число, а не в форме 'e', поэтому я преобразовал его в int
. Но это печатает неправильный ответ:
>>> print(int(21*temp*10/20))
20999999999999997902848
Я знаю, что целые числа не имеют ограничения в Python 3 (что я и использую), так что это сбивает меня с толку. Я думал, что это может быть потому, что часть /20
вызывает преобразование в float
, но число 21*(10^21)
находится в пределах float
, поэтому преобразование обратно в int
не должно быть проблемой.
Я попытался найти эту ошибку в сети, но безуспешно. Любая помощь будет оценена.