使用str.format舍入数字输出

时间:2016-02-24 20:33:07

标签: python rounding string-formatting

当我使用Python str.format函数

时,我有点沮丧
for i in range(10):
    print "{0:.1f} -> {0:.0f}".format(i+.5)

并获得此输出:

0.5 -> 0
1.5 -> 2
2.5 -> 2
3.5 -> 4
4.5 -> 4
5.5 -> 6
6.5 -> 6
7.5 -> 8
8.5 -> 8
9.5 -> 10

我预计小数5会被四舍五入,或者说实话,这就是我需要的。

这种舍入行为背后的规则是什么,或者它是否未定义,(在哪里)是否有记录?我找不到了。

但更重要的是:我怎么能得到我想要的?我希望在Python中很容易,但是我没有看到这个简单的解决方案。我是否要切换到Decimal

1 个答案:

答案 0 :(得分:3)

您只需使用round()功能:

for i in range(10):
    print "{} -> {}".format(i+.5, round(i+.5))

输出:

0.5 -> 1.0
1.5 -> 2.0
2.5 -> 3.0
3.5 -> 4.0
4.5 -> 5.0
5.5 -> 6.0
6.5 -> 7.0
7.5 -> 8.0
8.5 -> 9.0
9.5 -> 10.0