Java 为什么Math.ceil没有向上舍入?

Java 为什么Math.ceil没有向上舍入?,java,math,ceil,Java,Math,Ceil,我有以下代码: int total = 6; int perPage = 5; double pages = total/perPage; double ceilPages = Math.ceil(pages); out.println(ceilPages); 输出1.0 我认为它应该输出2.0,因为total/perPage的结果是1.2 为什么不向上舍入到2.0?您正在将整数除法的结果转换为双精度 您需要将除法的每个部分都转换为两倍,然后才能得到结果 double pages = (dou

我有以下代码:

int total = 6;
int perPage = 5;
double pages = total/perPage;
double ceilPages = Math.ceil(pages);
out.println(ceilPages);
输出
1.0

我认为它应该输出
2.0
,因为
total/perPage
的结果是
1.2


为什么不向上舍入到
2.0

您正在将整数除法的结果转换为双精度

您需要将除法的每个部分都转换为两倍,然后才能得到结果

double pages = (double)total/(double)perPage;
其余部分应该可以使用

双倍页面=Math.ceil((双倍)总计/每页)

(int)Math.ceil(3/2.0)
将给出答案2

(int)Math.ceil(3/2)
将给出答案1


为了获得浮点值,您需要对其中一个参数强制转换(或添加.0)

您正在执行整数除法,而不是浮点除法。
int-ceilPages=(total+perPage-1)/perPage
更整洁。您是否尝试打印
页面
以查看传递给
Math.ceil()的值
?这会立即告诉您问题不在于
Math.ceil()
。可能是(int)Math的重复。ceil(3/2.0)将给出答案2(int)Math。ceil(3/2)将给出答案1为了获得浮点值,您需要对每个部分的一个参数强制转换(或添加.0)。铸造第一个就足够了。