在Java中,使用%运算符获取整数除法x / y的余数与Math.IEEEremainder(x,y)方法之间在功能或性能上有区别吗?
最佳答案
除了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
的official documentation。