在 Java 中,取余运算使用 %
操作符来执行。这个操作符返回一个数除以另一个数的余数。以下是几种实现方式,每种方式都包括步骤流程和示例代码。
这是最常见的取余运算方式,使用内置的 %
操作符。
步骤流程:
使用%操作符,将左操作数除以右操作数,得到余数。
示例代码:
int dividend = 17;
int divisor = 5;
int remainder = dividend % divisor;
System.out.println("Remainder: " + remainder); // 输出结果为 2
Math.floorMod(a, b)
方法返回与除法 a / b
的余数,与 %
操作符不同,这个方法的结果始终为正数。
步骤流程:
使用 Math.floorMod(a, b),其中 a 是被除数,b 是除数,得到正数余数。
示例代码:
int dividend = 17;
int divisor = 5;
int remainder = Math.floorMod(dividend, divisor);
System.out.println("Remainder: " + remainder); // 输出结果为 2
这种方法只适用于除数为 2 的幂的情况。可以通过位运算实现更快速的取余运算。
步骤流程:
divisor = 2^n
,首先获取 divisor
的二进制位数 n
。n
位(相当于除以 divisor
)。n
位(与 divisor - 1
进行按位与操作),即为余数。示例代码:
int dividend = 17;
int divisor = 4; // 2的幂次方
int bitPosition = 0;
int tempDivisor = divisor;
while (tempDivisor > 1) {
tempDivisor >>= 1;
bitPosition++;
}
int quotient = dividend >> bitPosition;
int remainder = quotient & (divisor - 1);
System.out.println("Remainder: " + remainder); // 输出结果为 1
请注意,上述方法只适用于除数为 2 的幂的情况。
在以上方法中,第一种和第二种是最常见且通用的。如果需要更强大的数学操作,可以考虑使用 Apache Commons Math 或其他数学库,但通常情况下,内置的操作符和 Math
类提供的方法已经足够满足大多数需求。
如果要使用 Apache Commons Math 库,你需要添加以下依赖:
Maven 依赖:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-math3</artifactId>
<version>3.6.1</version>
</dependency>
Gradle 依赖:
implementation 'org.apache.commons:commons-math3:3.6.1'