BigDecimal en Java: cómo representar números de coma flotante con precisión

Con la clase BigDecimal de Java, es posible manejar con precisión números de coma flotante complejos. Para lograrlo, primero debes crear estos números y, después, utilizar diversos métodos que permitan trabajar con ellos. La sintaxis de cada método suele mantener una estructura parecida, lo que facilita la utilización de la clase después de una breve formación incluso en el caso de los principiantes.

¿Qué es BigDecimal de Java?

En Java, BigDecimal es una clase que te permite representar y procesar con gran precisión números de coma flotante complejos de tamaño (en teoría) ilimitado. A través de diferentes métodos, puedes implementar con máxima precisión operaciones de redondeo, aritmética, conversión de formato, hashing y comparaciones avanzadas.

Java BigDecimal consta de una escala de entero de 32 bits y un valor entero no escalado con precisión arbitraria. En este contexto, “escala” se refiere al número de dígitos después de la coma decimal, siempre y cuando estos sean mayores o iguales a cero. Si el valor es menor que cero, se multiplica por “10^(-escala)”. El tamaño máximo de la clase está limitado únicamente por la memoria del ordenador. Sin embargo, se trata de una limitación principalmente teórica, ya que es poco probable que un programa cree un número que supere la memoria disponible. Mientras que BigDecimal en Java está destinado exclusivamente para números de coma flotante, se recurre a BigInteger para números enteros.

Hosting
El hosting como nunca lo habías visto
  • Rápido, seguro, flexible y escalable
  • Certificado SSL/DDoS incluido
  • Dominio y asesor personal incluidos

¿Para qué se necesita la clase?

Aunque no siempre hay que recurrir a BigDecimal en Java, hay situaciones y ámbitos en los que esta clase resulta especialmente valiosa. Por ejemplo, se utilizan en cálculos donde incluso la posición decimal más alejada puede tener un gran impacto, como pueden ser las transacciones en comercio electrónico. También se utiliza en análisis estadísticos precisos. Además, hay gran número de programas, como los usados en el control y navegación de aviones o cohetes, que dependen de esta clase. Por su parte, en el ámbito sanitario también se recurre a Java BigDecimal.

¿Cómo se crea un objeto?

Si deseas utilizar BigDecimal en Java, primero debes importar la clase en el programa de Java. Una vez hecho, puedes declarar un objeto de esta clase, asignarle el valor deseado como argumento y pasarlo al constructor de Java correspondiente. Después, puedes usar los BigDecimals creados en Java. A continuación, te mostramos cómo importar la clase y declarar dos objetos de ejemplo:

/ / Programa de Java para la clase BigDecimal
import java.math.BigDecimal;
public class ejemplo BigDecimal
{
	public static void main(String[] args)
	{
		/ / Crear dos nuevos BigDecimals 
		BigDecimal ejemplouno =
			new BigDecimal ("1275936001.744297361");
		BigDecimal ejemplodos =
			new BigDecimal ("4746691047.132719503");
	}
}
java

Ahora puedes usar estos objetos con los métodos de la clase que desees.

Ejemplos de BigDecimal en Java

Después de haber creado los objetos, se utilizan distintos métodos para ejecutar operaciones y poder utilizar los objetos. Mediante sencillos ejemplos te presentamos cómo funcionan estos métodos y qué resultados puedes obtener. Con el comando de Java System.out.println() se imprime una línea de texto en la salida estándar.

Suma de dos BigDecimales

Para sumar dos BigDecimales en Java, se utiliza el método add(). Primero, indica los dos valores que deseas sumar. En nuestro ejemplo, el valor “EjemploUno” debe sumarse al valor “EjemploDos”. Esto presenta el siguiente aspecto:

EjemploUno =
EjemploUno.add(EjemploDos);
System.out.println ("El resultado después de la suma es: " + EjemploUno);
java

Restar números

Para restar dos valores entre sí, necesitas el método subtract(). En el siguiente ejemplo, se resta “EjemploDos” al “EjemploUno”. El código es el siguiente:

EjemploUno =
EjemploUno.restar(EjemploDos);
System.out.println ("El resultado que buscas después de la resta es: " + EjemploUno);
java

Multiplicar valores

El método usado para multiplicar dos BigDecimals en Java es muy similar a los de sumar o restar. Se denomina multiply() y utiliza como argumento al objeto “multiplicador”. Si quieres multiplicar “EjemploDos” por “EjemploUno”, el código que se debería usar es:

EjemploUno =
EjemploUno.multiplicar(EjemploDos);
System.out.println ("El resultado después de la multiplicación es: " + EjemploUno);
java

Dividir números

Para dividir dos BigDecimals en Java, recurre al método divide(). La sintaxis sigue siendo muy similar a la de otros métodos, y puede presentarse como sigue:

EjemploUno =
EjemploUno.divide(EjemploDos);
System.out.println ("El resultado que buscas después de la división es: " + EjemploUno);
java

No obstante, solo se obtendrá un resultado si este es exacto o se trata de un número entero. Si no es así, aparece el siguiente mensaje de error: java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result, que describe un error en tiempo de ejecución. Para evitar este mensaje, se pueden aplicar distintas opciones de redondeo, que pueden compartirse con java.math.RoundingMode. Existen distintas constantes entre las que elegir:

Constante Función
CEILING Redondeo positivo hacia el infinito.
DOWN Redondeo hacia 0.
FLOOR Redondeo hacia el infinito negativo.
HALF_DOWN Redondeo al siguiente número vecino y al opuesto de 0 si ambos están a la misma distancia.
HALF_EVEN Redondeo al siguiente número vecino y al hasta el siguiente número par si ambos están a la misma distancia.
HALF_UP Redondeo al siguiente número vecino en dirección a 0 siempre que ambos estén a la misma distancia.
UNNECESSARY Omite el redondeo y solo realiza operaciones exactas. Solo se puede utilizar si la división es exacta.
UP Redondeo a partir de 0.

Resumen de los métodos más importantes

Después de haber aprendido cómo utilizar BigDecimals en Java, así como los distintos métodos asociados, te mostramos a continuación algunas de los métodos más importantes.

Método Función
abs() BigDecimal con el valor absoluto de este BigDecimal.
add() Devuelve un BigDecimal cuyo valor es la suma de (this + Sumando).
divide() El valor de la salida se obtiene mediante (this / Divisor).
max(BigDecimal val) Devuelve el valor máximo de este BigDecimal.
min(BigDecimal val) Devuelve el valor mínimo de este BigDecimal.
movePointLeft(int n) Devuelve un BigDecimal con el punto decimal desplazado hacia la izquierda por el valor “n”.
movePointRight(int n) Devuelve un BigDecimal con el punto decimal desplazado hacia la derecha por el valor “n”.
multiply(BigDecimal multiplicand, MathContext mc) Devuelve un valor que resulta de (this * Multiplicador).
Consejo

En la Digital Guide puedes encontrar más información sobre Java: por ejemplo, conoce los operadores de Java y descubre las diferencias entre Java y JavaScript o entre Java y Python.

¿Le ha resultado útil este artículo?
Page top