Java整数除法向上取整

发布时间 2023-09-03 16:28:04作者: yikolemon

1、简介

在今天刷每日一题的时候看到的,感觉和以前自己写的向上取证的写法比起来好很多,在此记录。来源:1921. 消灭怪物的最大数量 - 力扣(LeetCode)

2、内容

1、Math.ceil() 此方法在任何整数相除时结果都正确

2、a%b==0?a/b:a/b+1 此方法在非负整数时正确

3、(a-1)/b+1 此方法在被除数不为0时正确

class Solution {
    public static void main(String[] args) {
        int a=2;
        int a1=-2;
        int a2=0;
        int b=3;
        System.out.println("===2/3===");
        System.out.println((int)Math.ceil((double)a/b));
        System.out.println(a%b==0?a/b:a/b+1);
        System.out.println((a-1)/b+1);

        System.out.println("===-2/3===");
        System.out.println((int)Math.ceil((double)a1/b));
        System.out.println(a1%b==0?a1/b:a1/b+1);
        System.out.println((a1-1)/b+1);

        System.out.println("===0/3===");
        System.out.println((int)Math.ceil((double)a2/b));
        System.out.println(a2%b==0?a2/b:a2/b+1);
        System.out.println((a2-1)/b+1);

    }
}

结果截图:

image-20230903160233070

3、注意

Math.ceil写法最为保险,任何情况下结果都正确

三木运算,对于被除数<0,则不需要+1

对于(x-1)/y+1要对被除数为0的时候,进行特殊的判断,直接返回0;

写算法题,(x-1)/y+1比较好用,因为数据范围会少会有x=0的,需要注意