round()函數(shù)的文檔指出,您向其傳遞了一個(gè)數(shù)字,并將小數(shù)點(diǎn)后的位置傳遞給四舍五入。因此,它應(yīng)該這樣做:n = 5.59round(n, 1) # 5.6但是,實(shí)際上,老的浮點(diǎn)怪異現(xiàn)象不斷蔓延,您會(huì)得到:5.5999999999999996出于UI的目的,我需要顯示5.6。我在Internet上閑逛,發(fā)現(xiàn)一些文檔取決于我對(duì)Python的實(shí)現(xiàn)。不幸的是,這在我的Windows開發(fā)機(jī)和我嘗試過(guò)的每臺(tái)Linux服務(wù)器上都會(huì)發(fā)生。另請(qǐng)參閱此處。除了創(chuàng)建自己的回合庫(kù)之外,還有什么辦法可以解決?
3 回答

慕村225694
TA貢獻(xiàn)1880條經(jīng)驗(yàn) 獲得超4個(gè)贊
我不知道它的存儲(chǔ)方式,但至少格式化正確:
'%.1f' % round(n, 1) # Gives you '5.6'

倚天杖
TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊
如果使用小數(shù)模塊,則可以不使用“舍入”功能進(jìn)行近似計(jì)算。這是我用于舍入的內(nèi)容,尤其是在編寫貨幣應(yīng)用程序時(shí):
Decimal(str(16.2)).quantize(Decimal('.01'), rounding=ROUND_UP)
這將返回一個(gè)十進(jìn)制數(shù)為16.20。
添加回答
舉報(bào)
0/150
提交
取消