将两个整数的除法舍入到下一个整数的正确方法是什么?
int a = 3;
int b = 2;
a / b = ? //should give 2
Math.ceil()
是正确的方法吗?
答案 0 :(得分:10)
不,Math.ceil()
不会自行运行,因为问题发生得更早。 a
和b
都是整数,因此将它们除以求值为整数,该整数是除法的实际结果的最低点。对于a = 3
和b = 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.0
或3d
),也可以在分割前投射它们:
((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