在Java中,使用%运算符获取整数除法的余数x / y和Math.IEEEremainder(x,y)方法之间是否存在任何功能或性能差异?
答案 0 :(得分:10)
除了John B已经指出的类型差异之外,语义也存在显着差异。 Math.IEEEremainder(x, y)
返回x - n * y
,其中n
是最接近的整数到x / y
(在平局的情况下取偶数),而x % y
1}}返回x - n * y
,其中n
是x / y
的整数部分(即,n
是将x / y
的真值舍入为零的结果,而不是最接近)。
为了说明差异:Math.IEEEremainder(9.0, 5.0)
为-1.0
,因为与9.0 / 5.0
最接近的整数为2
,而9.0 - 2 * 5.0
为-1.0
。但9.0 % 5.0
为4.0
,因为9.0 / 5.0
的整数部分为1
且9.0 - 1 * 5.0
为4.0
。
以下是Math.IEEEremainder
的{{3}}。
答案 1 :(得分:1)
Math.IEEEremainder
接受并返回doubles
,因此应在需要double
结果时使用。如果您需要模数,请使用%
,因为它会提供int
,并且比double
算术效率更高。