python轮留下一个尾随的0
我正在尝试将python中的浮点数舍入到小数点后零位 但是,round方法每次都会留下一个尾随0python轮留下一个尾随的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
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(值,小数点计数)