Java 如何舍入到下一个整数?
将两个整数的除法取整为下一个整数的正确方法是什么Java 如何舍入到下一个整数?,java,math,Java,Math,将两个整数的除法取整为下一个整数的正确方法是什么 int a = 3; int b = 2; a / b = ? //should give 2 Math.ceil()正确吗?您可以使用此表达式 (a+b-1)/b 不,Math.ceil()无法单独工作,因为问题发生得更早a和b都是整数,因此对它们进行除法计算得出一个整数,该整数是实际除法结果的下限。对于a=3和b=2,结果是1。一的上限也是一,因此你不会得到想要的结果 你必须先修理你的部门。通过将其中一个操作数强制转换为浮点数,可以获得
int a = 3;
int b = 2;
a / b = ? //should give 2
Math.ceil()
正确吗?您可以使用此表达式
(a+b-1)/b
不,Math.ceil()
无法单独工作,因为问题发生得更早a
和b
都是整数,因此对它们进行除法计算得出一个整数,该整数是实际除法结果的下限。对于a=3
和b=2
,结果是1
。一的上限也是一,因此你不会得到想要的结果
你必须先修理你的部门。通过将其中一个操作数强制转换为浮点数,可以获得所需的非整数结果。然后您可以使用Math.ceil
对其进行取整。此代码应适用于:
Math.ceil((double)a / b);
2个整数之间的除法(也称为
整数除法
)产生除法的剩余部分
3/2 = 1
要使用ceil,需要进行非整数除法:
您可以将值声明为双精度(3.0
或3d
)或在分割之前强制转换它们:
((double) 3) / ((double) 2) = 1.5
此双精度值可在ceil中使用
Math.ceil(3.0 / 2.0) = 2.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));
发出
或者你可以做(a+1)/b@AakashGoyal,这仅适用于此特定情况。那么4/2或6/5呢?考虑到输出将是int.4/2->5/2->2,6/5->7/5->,您将得到相同的值1@AakashGoyal:在大多数情况下不起作用。(
b=1
,或任何b-(a%b)>1
)@Henry的答案有效,另一方面这是我最喜欢的答案。它适用于任何编程语言。
Math.round(1654.9874)=1655
Math.ceil(1654.9874)=1655.0