#python
#python
Вопрос:
Я пытаюсь определить константу PI с точностью до 128 цифр (после десятичной точки). Это совершенно излишне для точности, и я знаю об этом. Код, который я использую, это:
from decimal import getcontext, Decimal
getcontext().prec = 130
PI = Decimal(3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460)
print(PI)
Результат этого
3.141592653589793115997963468544185161590576171875
которого даже нет в моем определенном десятичном. Кто-нибудь знает, как исправить эту проблему?
Ответ №1:
Проблема в том, что вы используете a float
в качестве входных данных, поэтому точность ограничена плавающей запятой.
Вместо этого используйте строку.
PI = Decimal('3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460')
Комментарии:
1. Большое спасибо, новичок в десятичном модуле, поэтому не уверен в этом.
2. Это не имеет ничего общего с десятичным модулем. Модуль не может изменить способ анализа аргументов функции.
3. Если цифры теряются при вводе числа с плавающей запятой,
Decimal
их нельзя добавить обратно.