python轮留下一个尾随的0

python轮留下一个尾随的0,python,Python,我正在尝试将python中的浮点数舍入到小数点后零位 但是,round方法每次都会留下一个尾随0 value = 10.01 rounded_value = round(value) print rounded_value 结果是10.0,但我想要10 如何做到这一点?转换为整数?将舍入值传递到int()以去除十进制数字: >>> value = 10.01 >>> int(round(value)) 10 >>> value = 10.5

我正在尝试将python中的浮点数舍入到小数点后零位

但是,round方法每次都会留下一个尾随0

value = 10.01
rounded_value = round(value)
print rounded_value
结果是10.0,但我想要10


如何做到这一点?转换为整数?

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

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

强制转换为int肯定是最简单的方法。如果你执意要让它保持浮动状态,下面是Alex Martelli提供的方法:

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

10.0
10
是相同的
float
值。当您打印该值时,会得到字符串
10.0
,因为这是该值的默认字符串表示形式。(与调用
str(10.0)
得到的字符串相同)

如果需要非默认表示,则需要显式地请求它。例如,使用函数:

print format(rounded_value, '.0f')
或者,使用其他格式设置方法:

print '{:.0f}'.format(rounded_value)
print '%.0f' % (rounded_value,)
中描述了为什么需要
'.0f'
的全部细节,但很直观:
f
表示需要定点格式(比如
10.0
而不是
1.0E2
),而
.0
表示小数点后不需要数字(比如
10
而不是
10.0

同时,如果对该值进行舍入的唯一原因是格式化,那么千万不要这样做。将精度保留在浮点数上,然后在格式中向下修剪:

print format(value, '.0f')

您将发现一个函数
number\u shaver()
,该函数在的编辑2中剪切数字的尾随零

在同一个线程中,解释了
number\u shaver()
中的正则表达式是如何工作的


几天后我改进了正则表达式。

问题的答案是:取消重复;这里的答案也会起作用,但这更像是一个令人高兴的巧合。值得指出的是,
round()
“.0f”
可以产生不同的结果,例如,
-0.5
(不同的舍入规则)。@J.F.Sebastian:是的,我在最后一段中试图澄清这一点,但我认为不是很清楚。调用
round
将一个浮点数取整为另一个浮点数
format
将浮点格式设置为字符串。当你指的是另一个时,使用其中一个同样是错误的。有时,您可能希望同时执行这两项操作(如在我的初始示例中,我在
rounded_value
上调用了
format
)。在舍入量中是否可能有一个动态值?e、 g.
{0:.{1}f}.format(值,小数点计数)