Foro de elhacker.net

Programación => Java => Mensaje iniciado por: pelaitass en 16 Abril 2018, 00:01 am



Título: Duda con números reales
Publicado por: pelaitass en 16 Abril 2018, 00:01 am
Hola.

Por qué esto:

Código:
System.out.println(1F/12);

Da: 0.083333336

Este último 6 de dónde sale

Gracias anticipadas


Título: Re: Duda con números reales
Publicado por: ivancea96 en 17 Abril 2018, 20:53 pm
Eso es un número en coma flotante, que es, sin ir más lejos, un formato para describir números reales.
Este formato utiliza binario, que es luego transformado a decimal. El problema es que, por decirlo de alguna manera, hay números en decimal que son números irracionales en binario, y viceversa. Con lo cual, al tratar de mostrarlo como decimal, eso es lo más aproximado que tienes (teniendo en cuenta que esa variable tenga 4 bytes si es un float)

En resumen, la coma flotantae (float, double), no dan verdadera precisión. Lo más que vas a obtener son aproximaciones. Por eso, cuando los muestres, deberías reducir a, por ejemplo, 2-4 decimales, para que no salgan cifras extrañas. Rara vez necesitarás más decimales precisos. Y si los necesitases, sería hora de utilizar alguna clase que maneje números reales con precisión.