Печать отформатированных десятичных знаков произвольной точности в python - PullRequest
0 голосов
/ 08 января 2012

Десятичные числа Python произвольной точности прекрасны, но я не могу найти способ напечатать их в хорошо отформатированном виде.Например, если я вычислю следующее выражение:

>>> pow(2,70) -2
1180591620717411303422L

, оно заканчивается на 2, как и должно быть.Однако, если я попытаюсь отформатировать его так, чтобы он отображал два десятичных знака, он округляется до 2 ^ 70, потому что значения с плавающей точкой не очень точные.

>>> print "{0:.2f}".format(pow(2,70) -2)
1180591620717411303424.00

Есть ли способ печати с нужным форматированием безпотеря точности?
(и без использования каких-либо нестандартных модулей, таких как NumPy)

1 Ответ

5 голосов
/ 08 января 2012

Это работает для меня:

>>> import decimal
>>> '{0:.2f}'.format(decimal.Decimal((pow(2,70)-2)))
1180591620717411303422.00

Из документации модуля десятичный :

Десятичный модуль обеспечивает поддержку десятичной арифметики с плавающей запятой.[...] Десятичные числа могут быть представлены точно.

...