使用 str.format 舍入数字输出

Rounding numeric output with str.format

我在使用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 吗?

你只需要使用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