我正在嘗試將python中的浮點數(shù)四舍五入到小數(shù)點后零位。但是,舍入方法每次都留下尾隨0。value = 10.01rounded_value = round(value)print rounded_value結(jié)果為10.0,但我想要10如何做到這一點?轉(zhuǎn)換為整數(shù)?
3 回答

慕村225694
TA貢獻(xiàn)1880條經(jīng)驗 獲得超4個贊
10.0
和10
是相同的float
值。當(dāng)您使用print
該值時,將獲得字符串10.0
,因為這是該值的默認(rèn)字符串表示形式。(您通過調(diào)用獲得的字符串相同str(10.0)
。)
如果要使用非默認(rèn)表示形式,則需要明確要求它。例如,使用format
函數(shù):
print format(rounded_value, '.0f')
或者,使用其他格式設(shè)置方法:
print '{:.0f}'.format(rounded_value) print '%.0f' % (rounded_value,)
為何要使用'.0f'
的詳細(xì)信息在Format Specification Mini-Language中進(jìn)行了描述,但很直觀:f
您想要的是定點格式(例如,10.0
而不是,例如1.0E2
),而.0
您想要的小數(shù)點后沒有數(shù)字(例如,10
而不是10.0
)。
同時,如果您選擇該值的唯一原因round
是用于格式化……則絕對不要這樣做。將精度保留在浮點數(shù)上,然后按照以下格式進(jìn)行修整:
print format(value, '.0f')

嚕嚕噠
TA貢獻(xiàn)1784條經(jīng)驗 獲得超7個贊
強制轉(zhuǎn)換為int無疑是最簡單的方法。如果您熱衷于保持浮動,以下是Alex Martelli提供的方法:
print ('%f' % value).rstrip('0').rstrip('.')
添加回答
舉報
0/150
提交
取消