
Edison Renato Valdez Vega
PreguntaPorque la suma de 2.56 + 9 es 11.559999 si el valor float admite dos decimales y al hacerle el casteo de double a float dicho valor se puede almacenar con dos números de valores decimales?
- Como dice la documentación de Java : “Los tipos de punto flotante son float y double, que están asociados conceptualmente con los valores y operaciones IEEE 754 de precisión simple de 32 bits y doble precisión de 64 bits, como se especifica en la Norma IEEE para aritmética binaria de punto flotante , Norma ANSI / IEEE 754 -1985 (IEEE, Nueva York).”
- No todos los números en base 10 es posible representarlos en base 2 con una cantidad de dígitos determinados. 2.56 es uno de estos números .

Camilo Castro
gracias por la explicaciób @DALBERCO

Carlos Alberto Angeles Villa
yo también me sorprendí con los resultados, me parece una respuesta mas coherente la de DALBERCO, Que al recortar los datos de 64 bit a 32 del numero 2.56 se borran algunos bit, haciendo que el resultado ya no este completo y por ello nos de como resultados 2.55999…

DIEGO ALBERCO
2.56 a base 2 : 1.10001111010111000010100011110101110000101000111101011100001010001111010111000010100011110101110000101000111101011100001010001111010111000010100011110101110000101000111101011100001010001111010111000010… 3. Cuando declaras 2.56 como double java sabe que se trabaja con 64 bits.

Puedes buscar en google sobre precisión en el casteo a números flotantes en Java, hay muchas fuentes de información, el problema radica en la conversión de por ejemplo un número doble con dos decimales a uno de coma flotante, en este caso el casteo convierte usando un mayor número de decimales y esa pequeña diferencia en la precisión.

Edison Renato Valdez Vega
donde puedo encontrar mas información sobre el tema

Es por la precisión que se maneja cada uno de los tipos de datos numéricos.