python round留下尾随0

时间:2013-05-26 20:17:42

标签: python

我试图将python中的浮点数舍入为零小数位。

但是,圆形方法每次都会留下0。

value = 10.01
rounded_value = round(value)
print rounded_value

结果为10.0,但我想要10

如何实现这一目标?转换为int?

4 个答案:

答案 0 :(得分:10)

将舍入值传递给int()以除去十进制数字:

>>> value = 10.01
>>> int(round(value))
10
>>> value = 10.55
>>> int(round(value))
11

答案 1 :(得分:2)

转换为int肯定是最简单的方法。如果你一直想把它放在一个漂浮物上,那么Alex Martelli如何做到这一点:

print ('%f' % value).rstrip('0').rstrip('.')

答案 2 :(得分:2)

10.010具有相同的float值。当您print该值时,您将获得字符串10.0,因为这是该值的默认字符串表示形式。 (通过调用str(10.0)得到的相同字符串。)

如果您需要非默认表示,则需要明确要求。例如,使用format函数:

print format(rounded_value, '.0f')

或者,使用其他格式化方法:

print '{:.0f}'.format(rounded_value)
print '%.0f' % (rounded_value,)

'.0f'中描述了f原因的完整详细信息,但直观地说:10.0表示您需要定点格式(如1.0E2而不是.0比方说,10),10.0表示您希望小数点后没有数字(例如round而不是print format(value, '.0f') )。

同时,如果原因你{{1}}编辑了值,那就是格式化......永远不要这样做。将精度保留在浮点数上,然后在格式化中将其修剪:

{{1}}

答案 3 :(得分:0)

你会发现一个函数number_shaver()可以在this post的编辑2中删除数字的尾随零。

同一个帖子中的

Another post解释了number_shaver()中的正则表达式是如何工作的。

几天后我在another thread中改进了正则表达式。