1. 概述

在本篇简短教程中,我们将演示如何 将一个给定的数值向上舍入(round up)到最近的百位数

举几个例子:

  • 99100
  • 200.2300
  • 400400

✅ 重点在于“向上舍入”:哪怕只多出 0.1,也要进位到下一个百位。


2. 实现方式

我们采用如下步骤来实现这个逻辑:

  1. 首先对输入参数调用 Math.ceil()
    ⚠️ 注意:Math.ceil() 返回的是 大于或等于参数的最小整数
    例如:Math.ceil(200.2) 的结果是 201.0

  2. 然后将该结果加上 99,再除以 100
    ✅ 这里利用了 Java 的 整数除法(Integer Division) 特性,会自动截断小数部分。

  3. 最后将商乘以 100,得到最终结果。

下面是完整的实现代码:

static long round(double input) {
    long i = (long) Math.ceil(input);
    return ((i + 99) / 100) * 100;
}

💡 举个例子来理解这个过程:

  • 输入为 200.2
    • Math.ceil(200.2)201
    • (201 + 99)300
    • 300 / 1003(整数除法)
    • 3 * 100300

3. 单元测试验证

我们编写了如下单元测试来验证实现是否正确:

@Test
public void givenInput_whenRound_thenRoundUpToTheNearestHundred() {
    assertEquals("Rounded up to hundred", 100, RoundUpToHundred.round(99));
    assertEquals("Rounded up to three hundred ", 300, RoundUpToHundred.round(200.2));
    assertEquals("Returns same rounded value", 400, RoundUpToHundred.round(400));
}

✅ 所有测试均通过,说明逻辑无误。


4. 总结

本文简单粗暴地展示了如何在 Java 中将一个数值向上舍入到最近的百位数。核心思路是借助 Math.ceil() 和整数除法特性,逻辑清晰、性能高效。

📌 完整代码可参考 GitHub 项目:core-java-modules/core-java-lang-math-2



原始标题:Round Up to the Nearest Hundred in Java