Me doy cuenta de que un número decimal solo puede almacenarse con tanta precisión como un float en un sistema binario, pero lo que no entiendo es lo que ocurre en el 7 decimal en mi salida de 10/7 .Cómo funcionan las tiendas java float v double
En mi primera prueba de salida noté que el 5 (7º lugar) al final del flotador v el 4 (7º lugar) seguido de un 2 en el doble. Yo creo que el séptimo lugar en el flotador sería un 4 ya que el octavo lugar en el doble es un 2.
flotador 1.4285715 doble 1,4285714285714286
entonces me encontré con la siguiente prueba de salida utilizando el formato flotante a 17 lugares. El octavo lugar en cada uno es diferente, el float es un 6, por lo que el 7º lugar se redondea a 5, supongo.
flotador 1.428571462631225600 doble 1.428571428571428600
En la tercera prueba de salida he intentado un reparto directo con el formato de cadena para ver lo que sucedería. Obtuve los mismos resultados que la segunda prueba.
Si tengo una pregunta simplista sobre un método complejo de almacenamiento en coma flotante, me disculpo.
float f = 10/7f;
double d = 10/7d;
System.out.format
("Float %1s\nDouble %2s\n", f,d);
/*
* Float 1.4285715
Double 1.4285714285714286
*/
System.out.format
("Float %1$.17f\nDouble %2$.17f\n", f,d);
/*
* Float 1.428571462631225600
Double 1.428571428571428600
*/
System.out.format
("Float %1s\nDouble %2s\n", (double)f,d);
/*
* Float 1.4285714626312256
Double 1.4285714285714286
*/
¿Cuál es exactamente su pregunta? (No veo ningún signo de interrogación en su publicación ...) – maerics
Así se almacena el doble: - http://en.wikipedia.org/wiki/Double-precision_floating-point_format –