HelloStranger

每个人都是初学者

Java关于向上取整 Math.ceil() 结果为0的问题

例子

我项目中有一句代码:

 int circleNum = (int)Math.ceil(faceppFaceUserList.size()/950);

然而,在我调试的时候,结果总是比预想结果少1

甩个例子 :

double a = 3/950;
double b = Math.ceil(a);
System.out.println(a);
System.out.println(b);

上面例子运行的结果 :

0.0
0.0

原因

在”3/950″中,
数字”3″是int类型
数字”950″是int类型
所以算式”3/950″也是一个int类型,
所以小数部分会被省略去掉,结果为0
变量b相当于是int类型强制转成double类型

正确方式

double a = (double)3/(double)950;

double b = Math.ceil(a);

System.out.println(a);

System.out.println(b);

 

点赞

发表评论