Java:为什么7/-3是-2?
为什么在Java7/-3中不是-3?它是-2。我在想除法的结果是四舍五入的。在Python2中是-3。java中还有其他除法规则吗 java中还有其他除法规则吗 像往常一样,对于这样的问题,你应该去。在这种情况下,相关章节为: 整数除法向0舍入。也就是说,在二进制数字提升(§5.6.2)后为整数的操作数Java:为什么7/-3是-2?,java,division,Java,Division,为什么在Java7/-3中不是-3?它是-2。我在想除法的结果是四舍五入的。在Python2中是-3。java中还有其他除法规则吗 java中还有其他除法规则吗 像往常一样,对于这样的问题,你应该去。在这种情况下,相关章节为: 整数除法向0舍入。也就是说,在二进制数字提升(§5.6.2)后为整数的操作数n和d生成的商是一个整数值q,其大小在满足|d>的同时尽可能大⋅ q|≤ |n |。此外,当|n|≥ |d和n和d具有相同的符号,但是q在|n>时为负数≥ |d |和n和d有相反的符号 请注意,这
n
和d
生成的商是一个整数值q
,其大小在满足|d>的同时尽可能大⋅ q|≤ |n |
。此外,当|n|≥ |d
和n
和d
具有相同的符号,但是q
在|n>时为负数≥ |d |
和n和d有相反的符号
请注意,这种“舍入”并不像您预期的那样是“中点舍入”,例如:-99/50是-1。实际上,它是向0截断的
至于为什么Java选择使用这种方法,而Python选择取而代之的是取而代之的四舍五入方法,您可能需要询问语言设计者。每个选项在某些情况下都是有用的,而在另一些情况下则是痛苦的。您可能会发现,在Python中,余数操作符的工作方式也不同——这两个决策通常是相互关联的,例如(从第节):
二进制数字提升(§5.6.2)后的整数操作数的余数运算产生一个结果值,使得(a/b)*b+(a%b)
等于a