我正在尝试将python中的浮点数四舍五入到小数点后零位。但是,舍入方法每次都留下尾随0。value = 10.01rounded_value = round(value)print rounded_value结果为10.0,但我想要10如何做到这一点?转换为整数?
3 回答
慕村225694
TA贡献1880条经验 获得超4个赞
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'
的详细信息在Format Specification Mini-Language中进行了描述,但很直观:f
您想要的是定点格式(例如,10.0
而不是,例如1.0E2
),而.0
您想要的小数点后没有数字(例如,10
而不是10.0
)。
同时,如果您选择该值的唯一原因round
是用于格式化……则绝对不要这样做。将精度保留在浮点数上,然后按照以下格式进行修整:
print format(value, '.0f')
噜噜哒
TA贡献1784条经验 获得超7个赞
强制转换为int无疑是最简单的方法。如果您热衷于保持浮动,以下是Alex Martelli提供的方法:
print ('%f' % value).rstrip('0').rstrip('.')
添加回答
举报
0/150
提交
取消