爲什麼在java 7/-3中不是-3?它是-2。我認爲劃分的結果是捨去的。在Python 2中是-3。有沒有其他的規則在java中劃分?Java:爲什麼7/-3是-2?
4
A
回答
14
是否有任何其他規則在java中劃分?
像往常一樣,對於這樣的問題,你應該去Java Language Specification。在這種情況下,相關的部分是15.17.2:
整數除法四捨五入朝向0。即,對於操作數
n
和d
,是經過二進制數值提升整數產生的商(§5.6.2)是一個整數值q
其數量級儘可能大,同時滿足|d ⋅ q| ≤ |n|
。此外,當|n| ≥ |d|
和n
和d
具有相同的符號時,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
。
相關問題
- 1. 爲什麼2 /// 2在Javascript中是2?
- 2. 爲什麼是Calendar.current.firstWeekday == 2?
- 3. 爲什麼是1 -2
- 4. J2EE中「Java 2」的意義是什麼?
- 5. C#和Java:3/2 * 3.2 = 3.2,爲什麼?
- 6. 爲什麼Java以3/2增長ArrayList?
- 7. 'num_of_cmt'是4而不是2。爲什麼?
- 8. 爲什麼java中的最大整數是2^31 - 1而不是2^31
- 9. Android java/system/bin/ping總是返回exitCode 2,爲什麼?
- 10. 爲什麼java中的字符大小是2個字節?
- 11. 爲什麼-2?爲什麼不是-3或-1?
- 12. 爲什麼2 * Integer.MAX_VALUE = -2?
- 13. 什麼是角2
- 14. 什麼是角2
- 15. 爲什麼jQuery.length == 2?
- 16. 什麼是Java
- 17. 什麼是Java
- 18. 什麼是Java
- 19. java功課。超出界限例外73
- 20. 爲什麼2 + 1&0結果是0?
- 21. 爲什麼總是threadPoolExecutor.getActiveCount()<= maximumPoolSize/2?
- 22. 爲什麼UINT_MAX + 3總是等於2?
- 23. 爲什麼IBOutlet保留計數是2
- 24. 什麼是Jersey 2替換爲HttpRequestContext.getEntity(Class)?
- 25. 爲什麼mandelbrot的邊界是2?
- 26. 爲什麼InSampleSize需要是2的冪?
- 27. 爲什麼〜真的結果是-2?
- 28. 爲什麼RAM的權力是2?
- 29. 爲什麼是-2 ** 2 == -4但是math.pow(-2,2)== 4.0?
- 30. 什麼是Java GUI