Diferencia entre revisiones de «BigDecimal»
m |
(→Ver también) |
||
Línea 35: | Línea 35: | ||
==Ver también== | ==Ver también== | ||
+ | * [[Cómo mostrar un BigDecimal según la localización]] | ||
* [http://java.sun.com/j2se/1.5.0/docs/api/java/math/BigDecimal.html Javadoc del BigDecimal] | * [http://java.sun.com/j2se/1.5.0/docs/api/java/math/BigDecimal.html Javadoc del BigDecimal] |
Revisión actual del 20:38 22 ene 2010
La clase java.math.BigDecimal es una clase de Java para representar números con coma flotante, de manera precisa.
La clase BigDecimal tiene métodos para operar al mismo (sumar, restar, multiplicar, dividir).
Contenido
Construcción
Para números con punto flotante (es decir, con parte decimal) la forma recomendada de construir un objeto BigDecimal es a través de un String.
BigDecimal a = new BigDecimal("10.20");
La construcción utilizando un double no es precisa, por la impresición intrínseca del Double.
El BigDecimal en el JDK 1.4 y el JDK 1.5
Supongamos el siguiente código:
new BigDecimal(1);
Depende donde se compile y ejecute, podemos tener problemas. En particular:
- Compilado con el JDK 1.4, funciona OK siempre
- Compilado con el JDK 1.5 y ejecutado en una JVM 1.5, funciona OK
- Compilado con el JDK 1.5 y ejecutado en una JVM 1.4, falla con un "NoSuchMethodError"
El problema
En JSE 1.4 NO existe el constructor BigDecimal(int). Luego el compilador del JDK 1.4 resuelve la llamada hacia el constructor Big Decimal(double).
Ahora bien, en JSE 1.5 se agregó el constructor BigDecimal(int). Al usar este compilador, se realiza la llamada a dicho constructor. Si se ejecuta con el Runtime de 1.5, todo funciona bien. Pero al ejecutar este código con el Runtime de 1.4, no se encuentra el constructor Big Decimal(int), y cuelga como ya vemos.
Solución
Invocar al constructor del BigDecimal con un String. O asegurarse que la ejecución se hará sobre un JSE 1.5