sábado, 14 de septiembre de 2024

■ Redondear decimales en Java

Cuando se trabaja con decimales a veces necesitamos redondearlos a valores enteros o solo mostrar cierta cantidad de sus decimales, por ejemplo al calcular promedios podríamos obtener valores como 7.869999999999999, en el que quizas solo nos interese redondear a 8 o mostrar solo 2 decimales así 7.87.

Para esto Java tiene métodos que pueden ayudarnos.


■ Redondear números decimales

Dentro de los métodos de la clase Math tenemos tres que nos permiten redondear números, cada uno de estos con su característica especial, éstos son:

• Math.round(double)

El primero es "round", este método recibe un número decimal como parámetro y devuelve el número redondeado a su valor entero más cercano ya sea superior o inferior, los casos son los siguientes:

Math.round(3.1)   devuelve 3
Math.round(3.49)  devuelve 3
Math.round(3.5)   devuelve 4
Math.round(3.7)   devuelve 4
Math.round(-3.4)  devuelve -3
Math.round(-3.7)  devuelve -4


• Math.floor(double)

El segundo método es "floor", en español "piso", este método recibe un número decimal y devuelve el número redondeado a su valor entero más cercado inferior, por ejemplo:

Math.floor(3.1)   devuelve 3.0
Math.floor(3.49)  devuelve 3.0
Math.floor(3.5)   devuelve 3.0
Math.floor(3.7)   devuelve 3.0
Math.floor(-3.4)  devuelve -4.0
Math.floor(-3.7)  devuelve -4.0


• Math.ceil(double)

El último método es "ceil", en español "techo", es decir, lo contrario al anterior. Este método recibe un número decimal y devuelve el número redondeado a su valor entero más cercado superior, por ejemplo:

Math.ceil(3.1)   devuelve 4.0
Math.ceil(3.49)  devuelve 4.0
Math.ceil(3.5)   devuelve 4.0
Math.ceil(3.7)   devuelve 4.0
Math.ceil(-3.4)  devuelve -3.0
Math.ceil(-3.7)  devuelve -3.0


Aquí otros métodos de Math: Métodos de Math


■ Uso

La forma de usar estos métodos va depender de lo que estemos haciendo y de cómo nos guste más hacerlo, algunas formas son las siguientes.

Asignando el resultado a una variable:
int resultado = Math.round(5.6);
double resultado = Math.floor(5.6);
double resultado = Math.ceil(5.6);

Imprimiendo directamente el resultado:
System.out.println(Math.round(5.6));
System.out.println(Math.floor(5.6));
System.out.println(Math.ceil(5.6));

En una condición:
if (Math.round(5.6) >= 6) {
    // código si se cumple
}

Dentro de otro método:
int resultado = Math.abs(Math.round(-5.6));


■ Mostrar determinada cantidad de decimales

Si lo que queremos en lugar de redondear el número es mostrarlo con cierta cantidad de decimales lo haríamos con el método "format" de la clase String.

Por ejemplo teniendo:
double cantidad = 26.145632;
String resultado;

• Mostrar solo dos decimales:
resultado = String.format("%.2f", cantidad);
System.out.println(resultado);

Imprimirá: 26.15

• Mostrar tres decimales:
resultado = String.format("%.3f", cantidad);
System.out.println(resultado);

Imprimirá: 26.146

• Mostrar cuatro decimales:
resultado = String.format("%.4f", cantidad);
System.out.println(resultado);

Imprimirá: 26.1456

Como se puede observar el número de decimales a mostrar se le indica en el primer parámetro del "String.format", donde el dígito entre el "%" y la "f" se refiere al número de decimales que queremos mostrar, por ejemplo para dos decimales es "%.2f", por lo que si queremos mostrar el número original solo pondríamos "%f".


Si queremos mostrar el número agrupado con comas solo se le agrega una coma al parámetro después de el % así:

cantidad = 26145632.3656;
resultado = String.format("%,.2f", cantidad);
System.out.println(resultado);

Imprimirá: 26,145,632.37

No hay comentarios:

Publicar un comentario