我正在嘗試將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
提交
取消