Десятичный модуль Python с точностью до 50, даже если он установлен на 130, как это исправить?

#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 их нельзя добавить обратно.