如何舍入到下一个整数?

时间:2013-10-30 16:55:46

标签: java math

将两个整数的除法舍入到下一个整数的正确方法是什么?

int a = 3;
int b = 2;

a / b = ? //should give 2

Math.ceil()是正确的方法吗?

4 个答案:

答案 0 :(得分:10)

不,Math.ceil()不会自行运行,因为问题发生得更早。 ab都是整数,因此将它们除以求值为整数,该整数是除法的实际结果的最低点。对于a = 3b = 2,结果为1。一个人的天花板也是一个 - 因此你不会得到理想的结果。

你必须先修好你的部门。通过将其中一个操作数强制转换为浮点数,可以获得所需的非整数结果。然后,您可以使用Math.ceil对其进行舍入。这段代码应该有效:

Math.ceil((double)a / b);

答案 1 :(得分:4)

您可以使用此表达式

(a+b-1)/b

答案 2 :(得分:2)

2个整数(也称为integer division)之间的除法产生剩余的除法。

3/2 = 1

要使用ceil,您需要进行非整数的除法。:

您可以将您的值声明为双精度数(3.03d),也可以在分割前投射它们:

((double) 3) / ((double) 2) = 1.5

此双值可用于ceil。

Math.ceil(3.0 / 2.0) = 2.0;

答案 3 :(得分:0)

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