将浮点数舍入为java中的下一个整数值

时间:2012-01-06 05:52:50

标签: java integer floating-point rounding

如何将浮点数舍入到Java中的下一个整数值?假设

  

2.1 - > 3

     

3.001 - > 4

     

4.5 - > 5

     

7.9 - > 8

6 个答案:

答案 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

除数必须是浮点才能正常工作。