我花了无数时间研究、阅读、测试,最终对 Python 的 Decimal 对象缺乏最基本的概念感到困惑和沮丧:将 Decimal 的输出格式化为字符串。
假设我们有一些具有以下值的字符串或 Decimal 对象:
0.0008
11.1111
222.2222
3333.3333
1234.5678
目标是简单地将 Decimal 的精度设置为小数点后第二位。例如,11.1111
将被格式化为11.11
和。1234.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 上下文的精度,因为这考虑了 TOTAL 位数,而不仅仅是小数精度。
我也对将 Decimal 转换为 float 以输出其值不感兴趣。Decimal 背后的全部原因是避免在浮点数上存储和运行计算。
还有哪些其他解决方案?我知道在堆栈溢出方面还有许多其他类似的问题,但我没有发现它们可以解决我正在询问的根本问题。
非常感谢!