2014-10-04 265 views

回答

14

是否有任何其他規則在java中劃分?

像往常一樣,對於這樣的問題,你應該去Java Language Specification。在這種情況下,相關的部分是15.17.2

整數除法四捨五入朝向0。即,對於操作數nd,是經過二進制數值提升整數產生的商(§5.6.2)是一個整數值q其數量級儘可能大,同時滿足|d ⋅ q| ≤ |n|。此外,當|n| ≥ |d|nd具有相同的符號時,q爲正數,但當|n| ≥ |d|q爲負時,n和d具有相反的符號。

請注意,這個「舍入」不是「中點舍入」,因爲您可能會預期:例如-99/50是-1。實際上,它是截斷朝向0.

至於爲什麼Java選擇使用這種方法,而Python選擇了舍入,這可能是您需要向語言設計師詢問的問題。在某些情況下,每個選項都很有用,而其他選項則很痛苦。你可能會發現,其餘的運營商在Python的工作方式不同太 - 這兩個決策往往聯繫在一起,使得(來自部分15.17.3):

的,是經過二進制數值提升整數操作數的求餘運算(§5.6 .2)產生一個結果值,使得(a/b)*b+(a%b)等於a