%运算符和IEEEremainder()方法之间的Java差异(如果有)?

时间:2011-11-03 16:18:35

标签: java math

在Java中,使用%运算符获取整数除法的余数x / y和Math.IEEEremainder(x,y)方法之间是否存在任何功能或性能差异?

2 个答案:

答案 0 :(得分:10)

除了John B已经指出的类型差异之外,语义也存在显着差异。 Math.IEEEremainder(x, y)返回x - n * y,其中n最接近的整数到x / y(在平局的情况下取偶数),而x % y 1}}返回x - n * y,其中nx / 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.04.0,因为9.0 / 5.0的整数部分为19.0 - 1 * 5.04.0

以下是Math.IEEEremainder的{​​{3}}。

答案 1 :(得分:1)

Math.IEEEremainder接受并返回doubles,因此应在需要double结果时使用。如果您需要模数,请使用%,因为它会提供int,并且比double算术效率更高。