为什么在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