3 回答
TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超6個(gè)贊
例如,在 Python 3 中,使用/運(yùn)算符將兩個(gè)整數(shù)相除會(huì)產(chǎn)生float值
>>> 1/2
0.5
... 但是也
>>> 1/1
1.0
(在 Python 2 中,你會(huì)得到0和1!)
在第一次迭代中,要添加int,并float與total += (n/2)兩個(gè)float在隨后的迭代秒。這兩個(gè)加法都會(huì)產(chǎn)生float值。
尾隨.0看起來很奇怪,因?yàn)槟鷮iT計(jì)算可以表示為整數(shù)的值。
已經(jīng)int_a/int_b成為一個(gè)float(在Python 3),即使結(jié)果可以寫成一個(gè)整數(shù),僅僅是一致的。
如果將一些整數(shù)相除會(huì)產(chǎn)生float值而將一些其他整數(shù)相除會(huì)產(chǎn)生值,那將會(huì)很奇怪int。
在您的第二個(gè)代碼片段中,您只將整數(shù)相加和相減,從而產(chǎn)生int值,因此您看不到尾隨的.0.
最后,如果要強(qiáng)制執(zhí)行整數(shù)除法,請(qǐng)使用//運(yùn)算符。
>>> 1//2
0
>>> 1//1
1
//在 Python 3 中的行為就像/在 Python 2 中一樣。
TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超7個(gè)贊
除法運(yùn)算符/在 Python 3 中總是產(chǎn)生一個(gè)浮點(diǎn)數(shù)。//如果你確定它n總是偶數(shù),或者如果你不需要余數(shù),你應(yīng)該改用整數(shù)除法運(yùn)算符:
total += n // 2
TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超9個(gè)贊
Python3 中的運(yùn)算符 '/' 返回一個(gè)浮點(diǎn)數(shù),作為結(jié)果使用整數(shù)除法 '//' 獲得整數(shù)。
添加回答
舉報(bào)
