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

5 java math

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

Mar*_*son 10

除了John B已经指出的类型差异之外,语义也存在显着差异. Math.IEEEremainder(x, y)返回x - n * y,其中n最接近于整数x / y(取入并列的情况下,偶整数),而x % y返回x - n * y,其中n是的整数部分x / y(即,n是四舍五入的真值的结果x / y趋向于零,而不是朝向最接近的).

为了说明的区别: Math.IEEEremainder(9.0, 5.0)-1.0的,因为最接近的整数9.0 / 5.02,和9.0 - 2 * 5.0-1.0.但9.0 % 5.04.0,因为的整数部分9.0 / 5.019.0 - 1 * 5.04.0.

下面是官方文档Math.IEEEremainder.