Introducción
Redondear un número significa obtener un valor aproximado de él. En Java, hay varias formas de redondear un número de punto flotante. En este laboratorio (lab), aprenderemos cómo redondear números utilizando diferentes métodos en Java.
Redondear un número significa obtener un valor aproximado de él. En Java, hay varias formas de redondear un número de punto flotante. En este laboratorio (lab), aprenderemos cómo redondear números utilizando diferentes métodos en Java.
Podemos utilizar el método System.out.printf() para imprimir el número redondeado en la consola. Podemos especificar el número de decimales que queremos redondear utilizando modificadores de precisión.
public static void main(String args[]) {
double pi = 3.14159265359;
double oneThird = 1.0/3.0;
float g = 9.807f;
System.out.printf("Pi: %.2f %n", pi); // prints Pi: 3.14
System.out.printf("One Third: %.3f %n", oneThird); // prints One Third: 0.333
System.out.printf("Gravitation Acceleration(g): %.0f", g); // prints Gravitation Acceleration(g): 10
}
Para ejecutar el código, abre la terminal y ve al directorio donde se encuentra el archivo de código. Luego, compila el código utilizando javac filename.java. Después, ejecútalo utilizando java filename.
Podemos utilizar la clase DecimalFormat para especificar un patrón en el que queremos formatear el número. Podemos usar símbolos de numeral (#) para especificar el número de decimales, y luego podemos utilizar el método format() para redondear los dígitos.
public static void main(String args[]) {
double pi = 3.14159265359;
double oneThird = 1.0/3.0;
float g = 9.807f;
DecimalFormat d1 = new DecimalFormat("#.##");
DecimalFormat d2 = new DecimalFormat("#.###");
DecimalFormat d3 = new DecimalFormat("#");
System.out.println("Pi: " + d1.format(pi)); // prints Pi: 3.14
System.out.println("One Third: " + d2.format(oneThird)); // prints One Third: 0.333
System.out.println("Gravitation Acceleration(g):" + d3.format(g)); // prints Gravitation Acceleration(g): 10
}
Para ejecutar el código, abre la terminal y ve al directorio donde se encuentra el archivo de código. Luego, compila el código utilizando javac filename.java. Después, ejecútalo utilizando java filename.
Podemos utilizar Math.round() para redondear números decimales. Se puede utilizar cuando queremos redondear un número a cero decimales.
public static void main(String args[]) {
double pi = 3.14159265359;
double oneThird = 1.0/3.0;
float g = 9.807f;
System.out.println("Pi: " + Math.round(pi)); // prints Pi: 3
System.out.println("One Third: " + Math.round(oneThird)); // prints One Third: 0
System.out.println("Gravitation Acceleration(g):" + Math.round(g)); // prints Gravitation Acceleration(g): 10
}
Para ejecutar el código, abre la terminal y ve al directorio donde se encuentra el archivo de código. Luego, compila el código utilizando javac filename.java. Después, ejecútalo utilizando java filename.
Podemos crear nuestro propio método para redondear un número decimal si queremos redondear a más de cero decimales. El siguiente método toma un valor decimal y el número de decimales a los que se desea redondear como parámetros y devuelve el número redondeado.
public static double round(double num, int places) {
double scale = Math.pow(10, places);
double roundedNum = Math.round(num * scale) / scale;
return roundedNum;
}
public static void main(String args[]) {
double pi = 3.14159265359;
double oneThird = 1.0/3.0;
float g = 9.807f;
System.out.println("Pi: " + round(pi, 2)); // prints Pi: 3.14
System.out.println("One Third: " + round(oneThird, 3)); // prints One Third: 0.333
System.out.println("Gravitation Acceleration(g):" + round(g, 0)); // prints Gravitation Acceleration(g): 10.0
}
Para ejecutar el código, abre la terminal y ve al directorio donde se encuentra el archivo de código. Luego, compila el código utilizando javac filename.java. Después, ejecútalo utilizando java filename.
Podemos utilizar el método round() de la clase BigDecimal para redondear un número. El siguiente código demuestra cómo redondear un número decimal utilizando el método round() de la clase BigDecimal.
public static void main(String args[]) {
BigDecimal pi = new BigDecimal("3.14159265359");
pi = pi.setScale(4, RoundingMode.HALF_UP); // Rounds to 4 decimal places
System.out.println("Pi: " + pi); // prints Pi: 3.1416
}
Para ejecutar el código, abre la terminal y ve al directorio donde se encuentra el archivo de código. Luego, compila el código utilizando javac filename.java. Después, ejecútalo utilizando java filename.
Si el número no es de tipo BigDecimal, primero podemos convertirlo y luego redondearlo utilizando la clase BigDecimal. El siguiente método se puede utilizar para redondear números de tipo de datos double.
public static double round(double num, int places) {
BigDecimal b = new BigDecimal(Double.toString(num));
b = b.setScale(places, RoundingMode.HALF_UP);
return b.doubleValue();
}
public static void main(String args[]) {
double pi = 3.14159265359;
double oneThird = 1.0/3.0;
double g = 9.807f;
pi = round(pi, 4);
oneThird = round(oneThird, 3);
g = round(g, 0);
System.out.println("Pi: " +pi); // prints Pi: 3.1416
System.out.println("One Third: " + oneThird); // prints One Third: 0.333
System.out.println("Gravitation Acceleration(g):" + g); // prints Gravitation Acceleration(g): 10.0
}
Para ejecutar el código, abre la terminal y ve al directorio donde se encuentra el archivo de código. Luego, compila el código utilizando javac filename.java. Después, ejecútalo utilizando java filename.
En este laboratorio (lab), hemos aprendido diferentes métodos para redondear números decimales en Java. Hemos utilizado printf() y DecimalFormat() para redondeos más simples, Math.round() para redondear a cero decimales, BigDecimal para redondeos precisos y DoubleRounder para redondear utilizando la biblioteca decimal4j. También hemos creado un método personalizado para redondear cualquier número decimal a cualquier número de decimales.