什么是将两个整数相除并向上取整的正确方法?
int a = 3;
int b = 2;
a / b = ? //should give 2
Math.ceil()
是正确的方法吗?
不,Math.ceil()
本身无法解决问题,因为问题发生在之前。a
和b
都是整数,所以将它们相除得到的是一个整数,该整数是实际结果的地板值。对于a = 3
和b = 2
,结果为1
。一个的上限也是一 - 因此您无法获得所需的结果。
您必须先修复您的除法。通过将操作数中的一个强制转换为浮点数,您可以获得所需的非整数结果。然后,您可以使用Math.ceil
将其向上舍入。这段代码应该有效:
Math.ceil((double)a / b);
(a+b-1)/b
Math.ceil方法的返回类型是double,而Math.round的返回类型是int。因此,如果你希望结果为整数,则应该使用Math.round方法;否则,Math.ceil方法也可以。
float x = 1654.9874f;
System.out.println("Math.round(" + x + ")=" + Math.round(x));
System.out.println("Math.ceil(" + x + ")=" + Math.ceil(x));
Math.round(1654.9874)=1655
Math.ceil(1654.9874)=1655.0
两个整数相除会产生余数,这种操作也称为整数除法
3/2 = 1
要使用 ceil 函数,您需要进行一个非整数的除法运算。
您可以将其值声明为双精度浮点数(3.0
或3d
),或在除法运算之前进行类型转换:
((double) 3) / ((double) 2) = 1.5
这个双精度浮点数可以用于向上取整函数ceil。
Math.ceil(3.0 / 2.0) = 2.0;
b = 1
,或任何b - (a % b) > 1
) - njzk2