我花了无数个小时的研究,阅读测试,并最终困惑和沮丧在Python的十进制对象缺乏最根本的概念:格式化十进制输出为字符串。
假设我们有一些字符串或者与下面的值小数对象:
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
显然,我们不能使用的十进制的上下文的精度,因为这考虑到总人数的数字,不只是小数精度。
我也没有兴趣在十进制转换为浮动输出其价值。 背后十进制整个原因是为了避免存储和彩车上运行计算。
有什么其他的解决方案有哪些? 据我所知,在堆栈溢出许多其他类似的问题,但他们都没有我发现解决我询问的根本问题。
非常感谢!