Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Duda principiante en la programación

Hola que tal?
Verán, soy principiante en java llevo una semana jugueteando y aprendiendo un poco y tengo una duda q me imagino sera una tontería:
No acabo de comprender porque cuando introduzco esto:
float a;
a = 2.4999f;
double b;
b = a*1;
System.out.println(b);
me da como resultado 2.4999001026153564. He estado buscando en otros foros y preguntado a amigos pero no me acaban de dejar muy claro como funciona el cambio del tipo de float a double o de byte o long a int o este tipo de problemas.

Gracias de antemano y un saludo.

septiembre 29, 2015 | Registered Commenterdwolf

Los tipos float y double, no solo en Java, tienen un problema de precisión debido a la conversión de datos de decimal a binario. Busca en cualquier parte sobre precisión de tipos de datos reales y obtendrás los detalles.

Lo primero que deberías probar es a insertar esto delante de tu última instrucción:


System.out.println(a);

A lo mejor no obtienes el resultado que creías. :-) En cualquier caso, como double tiene más precisión que float, y debido al problema que te comento sobre los tipos reales binarios, el valor puede variar ligeramente.

Para precisión absoluta en tipos reales, tienes que usar la clase BigDecimal, pero ojo, porque es mucho más lenta que usar float/double.

octubre 3, 2015 | Registered Commenterrickiees