¿Cuál es la diferencia entre float y double?

He leído sobre la diferencia entre precisión doble y precisión simple. Sin embargo, en la mayoría de los casos, float y double parecen ser intercambiables, es decir, usar uno u otro no parece afectar a los resultados. ¿Es realmente así? ¿Cuándo son intercambiables los floats y los doubles? ¿Cuáles son las diferencias entre ellos?

Esto es lo que dicen las normas C99 (ISO-IEC 9899 6.2.5 §10) o C++2003 (ISO-IEC 14882-2003 3.1.9 §8)

Hay tres tipos de punto flotante: float, double y long double. El tipo double proporciona al menos tanta precisión como float, y el tipo long double proporciona al menos tanta precisión como double. El conjunto de valores del tipo float es un subconjunto del conjunto de valores del tipo double; el conjunto de valores del tipo double es un subconjunto del conjunto de valores del tipo long double.

El estándar C++ añade: La representación del valor de los tipos de punto flotante está definida por la implementación.

Yo sugeriría echar un vistazo al excelente What Every Computer Scientist Should Know About Floating-Point Arithmetic que cubre el estándar IEEE de punto flotante en profundidad. Aprenderá los detalles de la representación y se dará cuenta de que hay un compromiso entre la magnitud y la precisión. La precisión de la representación de punto flotante aumenta a medida que la magnitud disminuye, por lo que los números de punto flotante entre -1 y 1 son los que tienen mayor precisión.

Comentarios (0)
  • Un doble es de 64 y la precisión simple (float) es de 32 bits.
  • El doble tiene una mantisa mayor (los bits enteros del número real).
  • Cualquier imprecisión será menor en el doble.
Comentarios (0)

Los flotantes tienen menos precisión que los dobles. Aunque ya lo sepa, lea Lo que debemos saber sobre la aritmética de punto flotante para entenderlo mejor.

Comentarios (2)