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)。铸造第一个就足够了。