You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java如何对除法得到的分数向上取整?现有代码结果错误如何修复?

问题排查与修复

现有代码错误原因

  • 核心逻辑违背需求:需求固定返回area1除以area2的商向上取整结果,但你在area2>area1的分支中,错误返回了area2/area1的计算结果,完全不符合要求,是小被除数场景结果异常的核心原因。
  • 分支结构不严谨:两个独立的if判断没有用else if关联,当area2大于area1且两数刚好整除时,会直接走到最终的else分支,返回错误的取整结果。
  • 缺少参数校验:未对area2做非0/非负校验,会触发无穷值返回或算术异常。
  • 命名不符合Java规范:Java方法惯例使用小驼峰命名,round_up是Python的命名风格。

最优修复方案

Java内置Math.ceil()方法专门用于浮点数向上取整,无需自行编写复杂分支逻辑,修复后代码如下:

public class PizzaClal {

    public static void main (String[] args){
        System.out.println(roundUp(15.0, 6.0)); // 输出3,符合预期
    }

    static int roundUp(double area1, double area2) {
        // 先做参数合法性校验
        if (area2 <= 0) {
            throw new IllegalArgumentException("面积参数不能为0或负数");
        }
        double quotient = area1 / area2;
        // Math.ceil返回向上取整的double值,强转为int即可
        return (int) Math.ceil(quotient);
    }
}

自定义实现向上取整逻辑(如不想使用内置方法)

如果你想要手动实现向上取整逻辑,无需区分两个参数的大小,统一处理即可:

static int roundUp(double area1, double area2) {
    if (area2 <= 0) {
        throw new IllegalArgumentException("面积参数不能为0或负数");
    }
    double quotient = area1 / area2;
    int intPart = (int) quotient;
    // 只要商不是整数,就返回整数部分+1,否则直接返回整数部分
    return quotient > intPart ? intPart + 1 : intPart;
}

内容的提问来源于stack exchange,提问作者Lisa McMurphy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 12:18:01