Hacer cálculos precisos con floats o doubles

4530 vistas

Si intentamos esto:



java
  1. System.out.println(1.3-1.2);



Obtendremos 0.10000000000000009 en lugar de 0.1 como mostrarÃa nuestra calculadora. Es decir, es imposible representar exactamente 0.1 o cualquier potencia negativa de 10 mediante un float o double.

La mejor solución para resoler este problema es usar la clase java.math.BigDecimal. Podemos usar, por ejemplo, asÃ:



java
  1. BigDecimal bd1 = new BigDecimal("1.3");
  2. BigDecimal bd2 = new BigDecimal("1.2");
  3. System.out.println(bd1.substract(bd2));



Atención, las cifras que queremos representar tienen que pasarse al constructor como Strings.