Saltar al contenido

Decimales en java.

En muchas ocasiones, nos vemos en la necesidad de limitar el número de decimales en java. Esta es una de las preguntas que más comederos de cabeza trae cuando aprendemos a programar desde cero en este lenguaje.

En este artículo, vamos a ver como limitar el número de decimales en un programa java.

Para aprender a hacer este proceso, vamos a pedir al usuario un número por teclado y calcular la raíz cuadrada de dicho número. Además, para que quede lo más claro posible, vamos a dividirlo en diferentes pasos.

Lo primero que vamos a hacer es declarar las variables necesarias a nivel de clase. A continuación, importaremos los paquetes que necesitamos en un proyecto llamado, limitar decimales.

import java.text.DecimalFormat;
import java.util.Scanner;

public class LimitarDecimales {

    // Creamos un objeto Scanner
    private static Scanner lectura = new Scanner(System.in);

    // Almacenamos un número pedido por teclado para sacar la raiz cuadrada
    private static String numero = "";

    // Guardamos el número en una variable decimal
    private static double num = 0;

    //Guardamos el resultado de la raiz cuadrada
    private static double resultado = 0;

Ahora vamos a pedir que el usuario, introduzca por teclado un número. A continuación, calcularemos la raíz cuadrada. Primeramente, la mostraremos por pantalla con el número total de decimales que muestra java por defecto.

Calcular la raíz cuadrada de un número.

public static void main(String[] args) {

        do {
           
            try {
                // Pedimos el número por teclado.
                System.out.println("Introduce un número");
                numero = lectura.nextLine();
                // Convertimos a double lo que el usuario introduce por teclado
                num = Double.parseDouble(numero);
            } catch (Exception e) {
                System.out.println("Debes introducir "
                        + "un número mayor que cero.");
            }
        
        } while (numero.isEmpty() || num == 0);

        // Calculamos la raiz cuadrada del número introducido por teclado
        resultado = Math.sqrt(num);

        // Mostramos el resultado por pantalla
        System.out.println("El resultado de la raiz cuadrada de " + num + 
                " es " + resultado);

Una vez que ya hemos calculado la raíz cuadrada de un número, toca acortar el número de decimales en java.

Acortar decimales en java con la clase DecimalFormat.

Para utilizar la clase DecimalFormat, lo primero que debemos hacer es crear un objeto de esta clase. A dicho objeto, le pasaremos entre comillas un parámetro, que será el símbolo de la almohadilla (#) un punto y tantos ceros como decimales queramos.

Después, a través del método format que contiene ese objeto, mostraremos el resultado.

// Reducimos el número de decimales a 2 con la clase DecimalFormat
        DecimalFormat df = new DecimalFormat("#.00");
        
        // Mostramos el resultado con dos decimales
        System.out.println("El resultado de la raiz cuadrada de " + num +
                " es " + df.format(resultado));

En este caso, los ceros que indicamos despues del punto, en este caso dos, indica el número de decimales a mostrar en el resultado final.

Otra forma de hacerlo, es a través del método format de la clase envolvente String. Vamos a verlo con un ejemplo.

Utilización del método format de la clase String.

// Ahora hacemos lo mismo con el método format
        // de la clase envolvente String
        System.out.println("El resultado de la raiz cuadrada de " + num + 
                " es " + String.format("%.2f", resultado));

Vamos a fijarnos, que en el caso de acortar el número de decimales en java, si lo hacemos de la forma que hemos visto, el separador de decimales, es una coma (,).

Además, Al poner %.2f, el número 2, indica el número de decimales que queremos mostrar.

Por último, podemos utilizar el método round de la clase Math. Veamos esta última manera de acortar decimales.

// Otra forma de mostrar decimales es a través del método round de la
        // clase Math, de la siguiente manera

        System.out.println("El resultado de la raiz cuadrada de " + num + 
                " es " + (double) Math.round( resultado*100d) / 100);
        
        // Cerramos el objeto lectura
        lectura.close();
    }
}

Con esta última manera de hacerlo, el separador de decimales, será un punto. Además, al utilizar la clase Math, debemos realizar un casting a decimal, ya que el método round, devuelve un tipo de dato decimal, de tipo double.

Por otro lado, si nos fijamos, estamos multiplicando el resultado por 100 y dividiendolo entre 100. Esto es así, porque queremos dos decimales. Si queremos más de dos decimales, solo debemos añadir más ceros tanto a la hora de multiplicar, como a la hora de dividir.

Como siempre, aquí os dejo un enlace para poder descargar el proyecto.

DESCARGAR PROYECTO