Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何舍入到下一个整数?_Java_Math - Fatal编程技术网

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