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.
- Rápido, seguro, flexible y escalable
- Certificado SSL/DDoS incluido
- Dominio y asesor personal incluidos
![](https://www.ionos.es/digitalguide/fileadmin/DigitalGuide/IAS/CTAs/SEO_Digital_Guide_Mobile_nur-Nlement_900x750.png)
¿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");
}
}
javaAhora 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);
javaRestar 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);
javaMultiplicar 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);
javaDividir 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);
javaNo 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). |
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.