2014-10-04 258 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