在Python中打印格式化的任意精度小数

0 投票
1 回答
1136 浏览
提问于 2025-04-17 09:45

Python的任意精度小数非常好用,但我找不到一种方法可以把它们打印得很漂亮。例如,如果我计算以下表达式:

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

结果是2,正如我所期望的那样。然而,如果我尝试把它格式化成显示两位小数,它却被四舍五入成2^70,因为浮点数的精度不够。

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

有没有办法在不失去精度的情况下,按照我想要的格式打印出来呢?
(而且不使用任何非标准的模块,比如NumPy)

1 个回答

7

这个对我有效:

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

来自decimal模块的说明:

decimal模块支持十进制浮点数的计算。[...] 十进制数字可以被精确表示。

撰写回答