Python的Decimal对象缺少最基本的概念,我花了无数个小时的时间来研究,阅读,测试,最后感到困惑,并感到沮丧:将Decimal的输出格式化为一个字符串.
我们假设我们有一些字符串或十进制对象具有以下值:
0.0008
11.1111
222.2222
3333.3333
1234.5678
目标是简单地将十进制的精度设置为小数点后的第二位.例如,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
显然,我们不能使用十进制的上下文的精度,因为这考虑到TOTAL位数,而不仅仅是十进制精度.
我也不感兴趣将十进制转换为浮点数以输出其值. Decimal背后的最后一个原因是避免在浮动体上存储和运行计算.
还有什么其他解决方案?我明白堆栈溢出还有许多其他类似的问题,但是我没有找到解决我正在询问的根本问题.
非常感谢!