在Python中打印格式化的任意精度小数
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模块支持十进制浮点数的计算。[...] 十进制数字可以被精确表示。