我知道,如果數字都是正數,整數除法將總是返回與截斷浮點數結果相同的答案。如果他們中的一個或兩個都是負面的,這是真的嗎?整數除法:是一個// b ==整數(a/b)對於所有整數a,b是否爲真?
我只是很想知道是否有一個整數除法表達式會返回Python 2和Python 3中的相同結果(是的,我知道關於from __future__ import division
)。
P.S.暫時忽略浮點溢出。
我知道,如果數字都是正數,整數除法將總是返回與截斷浮點數結果相同的答案。如果他們中的一個或兩個都是負面的,這是真的嗎?整數除法:是一個// b ==整數(a/b)對於所有整數a,b是否爲真?
我只是很想知道是否有一個整數除法表達式會返回Python 2和Python 3中的相同結果(是的,我知道關於from __future__ import division
)。
P.S.暫時忽略浮點溢出。
這不是在Python 3真實的,你可以測試它自己:
>>> int(-1/3) == -1//3
False
整數除法和a
模和b
給q
(商)和r
(餘)分別將始終返回號碼滿足b*q + r == a
和(a*b)>0 == q>0
(即a*b
和q
具有相同的符號)和abs(r) < abs(q)
。如果q
是浮點數,則表達式int(q)
總是向0進行舍入。
這將永遠是真正的Python 2除非你做from __future__ import division
,但那是因爲a/b == a//b
如果a
和b
是整數,在Python 2
'>>> int(-1/3)== -1 // 3' - >' True'我知道他們是真的,當我在py26中試用它時... –
@JoranBeasley - 這是因爲在Python 2.6如果'a'和'b'是整數,'a/b == a // b'。 – Omnifarious
@JoranBeasley因爲在Python 2中,具有兩個整數操作數的'/'正是「//」所做的。我們在這裏討論Python 3(兼容性),而在Python 3中它們有所不同。 – delnan
*」的整數除法表達式將返回在Python 2和相同的結果Python 3「*再來一次? – NullUserException
@NullUserException,在Python 3中,如果使用'/'分割兩個整數,您將得到浮點結果。這是來自Python 2的巨大變化。現在需要'// //'來獲得舊的行爲。 –
我仍然不明白他們爲什麼自動向上浮動....對我來說似乎很愚蠢......我的意思是'int/int = int'是CS的核心原則...... –