Jos*_*rns 16 python decimal python-2.7 python-3.x
我花了无数个小时研究,阅读,测试,并最终对Python的Decimal对象缺乏最基本的概念感到困惑和沮丧:将Decimal的输出格式化为字符串.
假设我们有一些字符串或Decimal对象具有以下值:
0.0008
11.1111
222.2222
3333.3333
1234.5678
Run Code Online (Sandbox Code Playgroud)
目标是简单地将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)
Run Code Online (Sandbox Code Playgroud)
结果输出将是:
0.00
11.11
222.22
3333.33
1234.57
Run Code Online (Sandbox Code Playgroud)
显然我们不能使用Decimal的上下文的精度,因为这考虑了TOTAL的位数,而不仅仅是小数精度.
我也没有兴趣将Decimal转换为float来输出它的值.Decimal背后的原因是避免在浮点数上存储和运行计算.
还有哪些其他解决方案?我知道堆栈溢出还有许多其他类似的问题,但我找不到解决我所询问的潜在问题.
非常感谢!
Mar*_*ers 27
只需使用字符串格式或format()函数:
>>> for dec in decimals:
... print format(dec, '7.2f')
...
0.00
11.11
222.22
3333.33
1234.57
Run Code Online (Sandbox Code Playgroud)
decimal.Decimal支持与浮点数相同的格式规范,因此您可以根据需要使用指数,固定点,常规,数字或百分比格式.
这是格式化小数的官方和pythonic方法; 的Decimal类实现.__format__()有效地处理这样的格式化方法.
| 归档时间: |
|
| 查看次数: |
21533 次 |
| 最近记录: |