爲什麼在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. 爲什麼是1 -2
- 3. 爲什麼是Calendar.current.firstWeekday == 2?
- 4. C#和Java:3/2 * 3.2 = 3.2,爲什麼?
- 5. 爲什麼java中的字符大小是2個字節?
- 6. 爲什麼-2?爲什麼不是-3或-1?
- 7. 什麼是角2
- 8. 什麼是角2
- 9. 什麼是Java
- 10. 什麼是Java
- 11. 爲什麼2 + 1&0結果是0?
- 12. 爲什麼IBOutlet保留計數是2
- 13. 爲什麼是-2 ** 2 == -4但是math.pow(-2,2)== 4.0?
- 14. Three.js 73 bufferGeometry index&setDynamic
- 15. 什麼是Java中
- 16. 什麼是Java中
- 17. 什麼是用java
- 18. 什麼是「Java Bean」?
- 19. 什麼是Java中
- 20. java中'...'是什麼?
- 21. Java,std是什麼?
- 22. 什麼是Java Universe?
- 23. 爲什麼Java有NullPointerException而不是NullReferenceException?
- 24. 爲什麼超超類是JAVA
- 25. 爲什麼Java字段不是多態?
- 26. java |運營商是爲了什麼?
- 27. 什麼是ASP.NET MVC 2?
- 28. 是什麼MVC 2和MVC3
- 29. (10%2)是什麼意思?
- 30. 什麼是COUNT(*)%2 = 1