Java - Problemas de representacion con los double

 
Vista:

Problemas de representacion con los double

Publicado por lujoselu98 (2 intervenciones) el 26/10/2017 21:46:19
alguien me puede explicar por que este codigo me imprime por pantalla un uno seguido de 33 ceros y no 33 nueves seguidos.
1
2
3
4
5
6
7
String nueve = "9";
StringBuilder minimoString = new StringBuilder();
for (int j  = 0 ; j < 33; j++){
    minimoString.append(nueve);
}
double minimo = Double.parseDouble(minimoString.toString());
System.out.println(String.format("%f",minimo));

o por que este otro imprime 9999999999999998000000000000000000,000000 y no son todos nueves
1
System.out.println(String.format("%f",Math.nextDown(Math.pow(10, (numeroCifrasBuscado)))));

Entiendo que es algun problema de respresentacion con el double o de aproximacion, pero no lo entiendo muy bien y no veo una solucion.
Alguna ayuda
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Problemas de representacion con los double

Publicado por Tom (1573 intervenciones) el 27/10/2017 09:11:38
Probablemente estás superando la precisión aceptable ...

https://es.wikipedia.org/wiki/Formato_en_coma_flotante_de_doble_precisi%C3%B3n
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 235
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problemas de representacion con los double

Publicado por Thanatos (97 intervenciones) el 27/10/2017 13:30:13
Para esa cantidad de decimales podrías usar BigDecimal en lugar de double:

1
import java.math.BigDecimal;

1
BigDecimal minimo = new BigDecimal(minimoString.toString());
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar