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