📌  相关文章
📜  Java番石榴 | IntMath.divide(int, int, RoundingMode) 方法与示例(1)

📅  最后修改于: 2023-12-03 15:16:36.197000             🧑  作者: Mango

Java 番石榴 | IntMath.divide(int, int, RoundingMode) 方法与示例

介绍

IntMath.divide(int x, int y, RoundingMode mode) 是 Guava 工具库中的一个静态方法。该方法旨在实现整数的除法操作,同时支持进行舍入操作。在 Java 中,整数的除法运算存在不同类型的结果(整除结果和精确结果)和不同的舍入方式,因此在编写 Java 应用程序时,我们需要考虑和选择合适的除法实现。

方法签名

IntMath.divide(int x, int y, RoundingMode mode)

其中:

  • x:被除数
  • y:除数
  • mode:舍入方式
舍入方式 RoundingMode

RoundingMode 是 Java 枚举类型,表示进行舍入操作时的四种取整方案:

  • UP:向远离 0 方向舍入
  • DOWN:向靠近 0 的方向舍入(即截断小数位)
  • CEILING:向正无穷方向舍入
  • FLOOR:向负无穷方向舍入
  • HALF_UP:四舍五入,5 会向上舍入
  • HALF_DOWN:四舍五入,5 会判断是舍近还是舍远
  • HALF_EVEN:银行家舍入法——四舍六入五考虑,5 后面如果有非零数就向上舍入,如果是偶数则向下舍入
返回值

IntMath.divide(int x, int y, RoundingMode mode) 方法的返回值类型为 int,表示整数除法的结果。如果抛出异常,表示出现可恢复的错误。

示例
对于整数进行精确除法
import com.google.common.math.IntMath;
import java.math.RoundingMode;

public class IntMathDemo {
    public static void main(String[] args) {
        int result = IntMath.divide(15, 3, RoundingMode.UNNECESSARY);
        System.out.println(result); // 输出:5
    }
}

在上面的示例中,我们对两个整数 15 和 3 进行整数除法。由于 15 可以被 3 整除,因此这个操作得到的结果是另一个整数 5。我们指定了 RoundingMode.UNNECESSARY 的舍入方式,这表明我们所需的结果必须是整除。

对于不能整除的情况进行舍入除法
import com.google.common.math.IntMath;
import java.math.RoundingMode;

public class IntMathDemo {
    public static void main(String[] args) {
        int result = IntMath.divide(10, 3, RoundingMode.DOWN);
        System.out.println(result); // 输出:3
    }
}

上面的示例中,我们将 10 想除于 3,得到的商不是整数,因此需要进行舍入处理。使用 RoundingMode.DOWN 的舍入方式,得到的结果是 3。

对于舍入的不同方向进行比较
import com.google.common.math.IntMath;
import java.math.RoundingMode;

public class IntMathDemo {
    public static void main(String[] args) {
        int result1 = IntMath.divide(11, 2, RoundingMode.DOWN);
        System.out.println(result1); // 输出:5
        int result2 = IntMath.divide(11, 2, RoundingMode.UP);
        System.out.println(result2); // 输出:6
    }
}

上面的示例展示了使用 RoundingMode.DOWN 和 RoundingMode.UP 两种不同的舍入方式进行除法比较。由于 11/2 的商是 5.5,下取整时应返回 5 ;而上取整时应返回 6。