1. 概述
在本篇简短教程中,我们将演示如何 将一个给定的数值向上舍入(round up)到最近的百位数。
举几个例子:
99
→100
200.2
→300
400
→400
✅ 重点在于“向上舍入”:哪怕只多出 0.1,也要进位到下一个百位。
2. 实现方式
我们采用如下步骤来实现这个逻辑:
首先对输入参数调用
Math.ceil()
。
⚠️ 注意:Math.ceil()
返回的是 大于或等于参数的最小整数。
例如:Math.ceil(200.2)
的结果是201.0
。然后将该结果加上
99
,再除以100
。
✅ 这里利用了 Java 的 整数除法(Integer Division) 特性,会自动截断小数部分。最后将商乘以
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 / 100
→3
(整数除法)3 * 100
→300
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