0

Python 的任意精度小数很可爱,但我似乎无法找到一种以格式良好的方式打印它们的方法。例如,如果我计算以下表达式:

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

它以 2 结尾,就像它应该的那样。但是,如果我尝试将其格式化为显示两位小数,它会被四舍五入为 2^70,因为浮点数不是很精确。

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

有没有办法以我想要的格式打印而不会丢失精度?
(并且不使用任何非标准模块,例如 NumPy)

4

1 回答 1

6

这对我有用:

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

十进制模块文档:

decimal 模块提供对十进制浮点运算的支持。[...]十进制数可以精确表示。

于 2012-01-07T23:10:40.860 回答