round - redondear un número de coma flotante al siguiente valor entero en java
redondear float java (6)
¿Cómo puedo redondear un número de coma flotante al siguiente valor entero en Java? Suponer
2.1 -> 3
3.001 -> 4
4.5 -> 5
7.9 -> 8
Deberías ver el redondeo del techo en los paquetes matemáticos de Java: Math.ceil
EDITAR: Agregó el javadoc para Math.ceil. Puede valer la pena leer todo el método en Matemáticas.
http://docs.oracle.com/javase/7/docs/api/java/lang/Math.html#ceil%28double%29
public static double ceil(double a)
Devuelve el valor doble más pequeño (más cercano al infinito negativo) que es mayor o igual que el argumento y es igual a un número entero matemático. Casos especiales:
- Si el valor del argumento ya es igual a un entero matemático, el resultado es el mismo que el argumento.
- Si el argumento es NaN o un infinito o cero positivo o cero negativo, entonces el resultado es el mismo que el argumento.
- Si el valor del argumento es menor que cero pero mayor que -1.0, entonces el resultado es cero negativo.
Tenga en cuenta que el valor de
Math.ceil(x)
es exactamente el valor de-Math.floor(-x)
.
Estoy usando esto:
public static int roundDoubleToUpperInt(double d){
return (d%1==0.0f)?(int)d:(int)(d+1);
}
Si ayuda a alguien, así es como lo hago funcionar:
int arraySize = 3;
int pageSize = 10;
int pagesQty = (int) Math.ceil(arraySize / (float) pageSize);
System.out.println(pagesQty);
//Displays 1
Divisor debe ser un flotador para funcionar correctamente.
Tuve el mismo problema cuando aún obtenía el valor int más pequeño. Era la división, no el Math.ceil. Tienes que agregar un molde (float) a los ints. Así es como lo arreglé:
int totalNumberOfCachedData = 201;
int DataCountMax = 200;
float ceil =(float) totalNumberOfCachedData / (float)DataCountMax;
int roundInt = (int) Math.ceil(ceil);
Esto me dará 2 por el valor de roundInt.
Ver
float a=10.34f,b=45.678f;
System.out.println((int)Math.ceil(a));
System.out.println((int)Math.ceil(b));
Salida
11
46
prueba esto
float a = 4.5f;
int d = (int) Math.ceil(a);
System.out.println(d);