获得仅保留1位小数

148

我该如何将45.34531转换为45.3

3个回答

242

你是试图仅用一个数字来表示它吗:

print("{:.1f}".format(number)) # Python3
print "%.1f" % number          # Python2

或者实际上四舍五入其他小数位?

round(number,1)

甚至可以严格向下舍入吗?

math.floor(number*10)/10

你的第一种和第三种解决方案有可能会得出不同的结果吗?我认为它们完全相同。@relet - Devesh Saini
1
尝试使用数字-2.55。它们也返回不同的类型。 - relet
@DeveshSaini 尝试使用数字2.36。第一个将给出2.4,第三个将给出2.3。 - Sanyam Jain

40
>>> "{:.1f}".format(45.34531)
'45.3'

或者使用内置的round函数:

>>> round(45.34531, 1)
45.299999999999997

13
更新:现在我的回合得分是45.3。 - Nathan
2
这个答案是正确的,但在我看来格式太复杂了。你应该只写"{:.1f}".format(45.34531) - Dave Halter
@DaveHalter,写出0.1而不是.1太复杂了,有谁能理解那段代码... - dogmatic69
6
还有一个不必要的前导零。我认为没有人真正理解格式化语言,所以保持简单最好。现在使用Python 3.6,我建议这样写:f"{number:.1f}" - Dave Halter

21
round(number, 1)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接