我花了无数个小时研究、阅读、测试,最终对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
显然,我们不能使用十进制上下文的精度,因为这要考虑数字总数,而不仅仅是十进制精度。
我也不想把十进制数转换成浮点数来输出它的值。Decimal后面的全部原因是为了避免在float上存储和运行计算。
还有其他的解决方案吗?我知道还有很多关于堆栈溢出的类似问题,但是没有一个问题可以解决我正在询问的底层问题。
非常感谢!