我试图将python中的浮点数舍入为零小数位。
但是,圆形方法每次都会留下0。
value = 10.01
rounded_value = round(value)
print rounded_value
结果为10.0,但我想要10
如何实现这一目标?转换为int?
答案 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.0
和10
具有相同的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中改进了正则表达式。