在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.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.