Porque 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 pu...

Pregunta de la clase:
Tipos de operadores en Java
Edison Renato Valdez Vega

Edison Renato Valdez Vega

Pregunta
studenthace 7 años

Porque 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?Captura.PNG

6 respuestas
para escribir tu comentario
    Camilo Castro

    Camilo Castro

    studenthace 6 años

    gracias por la explicaciób @DALBERCO

    Carlos Alberto Angeles Villa

    Carlos Alberto Angeles Villa

    studenthace 6 años

    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

    DIEGO ALBERCO

    studenthace 6 años
    1. 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).”
    2. 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 .

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

    64bits.png 4. Cuando realizas el casteo a float lo reduce a 32bits es cuando pierde bits y el numero seria una solo una aproximación al inicial: 2.5599999999

    32bits.png

    Team Platzihace 7 años

    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

    Edison Renato Valdez Vega

    studenthace 7 años

    donde puedo encontrar mas información sobre el tema

    Team Platzihace 7 años

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

Curso Básico de Java SE 2018

Curso Básico de Java SE 2018

Java es un lenguaje de programación con el que puedes desarrollar software multiplataforma gracias a la JVM (Máquina Virtual de Java). Aprende las características fundamentales del lenguaje y desarrolla tus propios proyectos. Serás capaz de aplicar desde conceptos básicos, pasando por sus características orientadas a objetos y otros conceptos avanzados como herencia y polimorfismo.

Curso Básico de Java SE 2018
Curso Básico de Java SE 2018

Curso Básico de Java SE 2018

Java es un lenguaje de programación con el que puedes desarrollar software multiplataforma gracias a la JVM (Máquina Virtual de Java). Aprende las características fundamentales del lenguaje y desarrolla tus propios proyectos. Serás capaz de aplicar desde conceptos básicos, pasando por sus características orientadas a objetos y otros conceptos avanzados como herencia y polimorfismo.