如何将浮点数舍入到Java中的下一个整数值?假设
2.1 - > 3
3.001 - > 4
4.5 - > 5
7.9 - > 8
答案 0 :(得分:36)
你应该看一下java的数学包中的上限:Math.ceil
编辑:为Math.ceil添加了javadoc。可能值得阅读数学中的所有方法。
http://docs.oracle.com/javase/7/docs/api/java/lang/Math.html#ceil%28double%29
public static double ceil(double a)
返回最小(最接近负无穷大)双精度值 大于或等于参数且等于a 数学整数。特殊情况:
- 如果参数值已经等于数学整数,则结果与参数相同。
- 如果参数为NaN或无穷大或正零或负零,则结果与参数相同。
- 如果参数值小于零但大于-1.0,则结果为负零。
请注意,
Math.ceil(x)
的值恰好是值-Math.floor(-x)
。
答案 1 :(得分:19)
试试这个
float a = 4.5f;
int d = (int) Math.ceil(a);
System.out.println(d);
答案 2 :(得分:10)
我遇到了同样的问题,我仍然得到较小的int值。这是师,而不是Math.ceil。你必须在int中添加一个(浮点)强制转换。这就是我修复它的方法:
int totalNumberOfCachedData = 201;
int DataCountMax = 200;
float ceil =(float) totalNumberOfCachedData / (float)DataCountMax;
int roundInt = (int) Math.ceil(ceil);
这将为我提供2的roundInt值。
答案 3 :(得分:7)
见
float a=10.34f,b=45.678f;
System.out.println((int)Math.ceil(a));
System.out.println((int)Math.ceil(b));
输出
11
46
答案 4 :(得分:2)
我用这个:
public static int roundDoubleToUpperInt(double d){
return (d%1==0.0f)?(int)d:(int)(d+1);
}
答案 5 :(得分:2)
如果它对某人有帮助,请按以下步骤操作:
int arraySize = 3;
int pageSize = 10;
int pagesQty = (int) Math.ceil(arraySize / (float) pageSize);
System.out.println(pagesQty);
//Displays 1
除数必须是浮点才能正常工作。