Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

[Duda] Qué significa precisión?

Hola!!! Me quedó la duda de a qué se refieren exactamente cuando hablan de la precisión en datos de tipo float y double. Por lo que pude investigar, ¿Se refiere a que en la computadora no se puede representar con exactitud ningún número decimal? y que por tanto solo se busca hacer una aproximación?

  • Por ejemplo Dado el número real: 0.3, al expresarlo como tipo float en java y además hacer una comparación nos queda asi:
 float num= 0.3F;
  System.out.println(num==0.3);

Lo que sale en la consola es false, es decir aunque en la variable se almacenó el número 0.3, realmente no lo es. Cuando le pido más dígitos de precisión:

float num= 0.3F;
        System.out.println(num==0.3);
        System.out.printf("Valor de num: %.10f\n", num);

Imprime en consola: Valor de num: 0,3000000119, por lo tanto realmente no es 0.3 exactamente. Cuando hago lo mismo con el tipo double se imprime en consola: true, Valor de num: 0,3000000000, por lo tanto guardó el número con muchísima más precisión. Por lo tanto, ¿se habla de precisión ya que la computadora no siempre guarda el número que le indicamos sino que guarda uno aproximado, y además los tipos double aunque suelen ocupar más memoria, guardan el número con mayor precisión?

1 respuesta

Los tipos de datos float y double se utilizan para representar numeros decimales. Pero a final de cuentas ese número que intentas guardar en algún lugar se guarda en una localidad de memoria. El tipo float tiene menor cantidad de bits que el tipo double. Esto significa que el double puede guardar el número con mayor exactitud. Al guardar en localidades de memoria a final de cuentas se hace un tipo de conversión binaria dado que es el lenguaje máquina. No interpreta los números como lo hacemos nosotros. Se debe reservar un espacio, entre mayor cantidad de bits o memoria le asignas, mejor puedes representar un número. Si usaras un entero y lo guardas como float o double sería un desperdicio de memoria. Porque la máquina debe reservar ese espacio. Incluso te lo puede llegar a marcar.