gpt4 book ai didi

python - 将 Python Decimal 对象格式化为指定的精度

转载 作者:IT老高 更新时间:2023-10-28 21:18:39 32 4
gpt4 key购买 nike

我花了无数时间研究、阅读、测试,最终对 Python 的 Decimal 对象缺乏最基本的概念感到困惑和沮丧:将 Decimal 的输出格式化为字符串。

假设我们有一些具有以下值的字符串或 Decimal 对象:

   0.0008
11.1111
222.2222
3333.3333
1234.5678

目标是简单地将 Decimal 的精度设置为小数点后第二位。例如,11.1111 将被格式化为 11.111234.5678 将被格式化为 1234.57

我设想的代码类似于以下:

import decimal
decimals = [
decimal.Decimal('0.0008'),
decimal.Decimal('11.1111'),
decimal.Decimal('222.2222'),
decimal.Decimal('3333.3333'),
decimal.Decimal('1234.5678'),
]
for dec in decimals:
print dec.as_string(precision=2, rounding=ROUND_HALF_UP)

结果输出将是:

0.00
11.11
222.22
3333.33
1234.57

显然我们不能利用 Decimal 上下文的精度,因为这会考虑到总位数,而不仅仅是小数精度。

我也对将 Decimal 转换为 float 以输出其值不感兴趣。 Decimal 背后的全部原因是避免在 float 上存储和运行计算。

还有哪些其他解决方案?我知道还有许多其他类似的堆栈溢出问题,但我发现没有一个可以解决我所询问的根本问题。

非常感谢!

最佳答案

只需使用 string formattingformat() function :

>>> for dec in decimals:
... print format(dec, '7.2f')
...
0.00
11.11
222.22
3333.33
1234.57

decimal.Decimal 支持相同的format specifications与 float 一样,您可以根据需要使用指数、定点、通用、数字或百分比格式。

这是格式化小数的官方和pythonic方法; Decimal 类实现了 .__format__() 方法来有效地处理这种格式。

关于python - 将 Python Decimal 对象格式化为指定的精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15076310/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com