Существуют ли ограничения числа в python?

Я сделал программу Python 3 для вычисления pi для школьного проекта, но он всегда останавливается на 16 десятичных знаков. Есть ли ограничение на длину чисел в python? Если это так, то язык, который я мог бы использовать, позволит мне продолжить?

accuracy = int(input("accuracy:  "))

current = 2
opperation = "+"
number = 3
count = 1

for i in range (accuracy):
    if opperation == "-":
        number = number - (4/(current*(current+1)*(current+2)))
        opperation = "+"
    elif opperation == "+":
        number = number + (4/(current*(current+1)*(current+2)))
        opperation = "-"
    current += 2
    print(str(count).zfill(8)) + ":    " + str(number)
    count += 1

Ответ 1

Нет ограничений, если вы работаете с целыми числами и Python 3.x. Однако точность, которую вы получаете с использованием чисел с плавающей запятой, ограничена. Python float (например, 3.14) на самом деле является C double, который, как вы говорите, имеет около 16 десятичных чисел точности.

Вы можете использовать модуль decimal для создания и работы с другими числами с плавающей запятой с произвольной точностью. Пример кода:

# Normal Python floats
a = 0.000000000000000000001
b = 1 + 2*a
print(b)  # Prints 1.0

# Using Decimal
import decimal
decimal.getcontext().prec = 100  # Set the precision
a = decimal.Decimal('0.000000000000000000001')
b = 1 + 2*a
print(b)  # Prints 1.000000000000000000002

Подробнее о decimal см. .