Duda con números reales

Iniciado por pelaitass, 16 Abril 2018, 00:01 AM

0 Miembros y 1 Visitante están viendo este tema.

pelaitass

Hola.

Por qué esto:


System.out.println(1F/12);


Da: 0.083333336

Este último 6 de dónde sale

Gracias anticipadas

ivancea96

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.