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

发布于 2024-12-25 18:06:05 字数 368 浏览 1 评论 0原文

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

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

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

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

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

Python's arbitrary precision decimals are lovely, but I can't seem to find a way to print them in a nicely formatted way. For example, if I compute the following expression:

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

it ends in a 2, like it should. However, if I try to format it to show two decimal places, it gets rounded to 2^70 because floats aren't very precise.

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

Is there a way to print with the formatting I want without losing precision?
(and without using any non-standard modules such as NumPy)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

时光无声 2025-01-01 18:06:05

这对我有用:

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

来自 decimal 模块文档:

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

This works for me:

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

From the decimal module documentation:

The decimal module provides support for decimal floating point arithmetic. [...]
Decimal numbers can be represented exactly.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文