2011-10-05 30 views
6

Dado un número arbitrario representado en el formato de precisión simple IEEE-754 (comúnmente conocido como float en algunos idiomas/plataformas), ¿puedo estar seguro de que el número puede representarse exactamente en el formato de precisión doble también?¿Todos los números de precisión simple son representables en el formato de precisión doble?

Si es así, ¿es válida esta propiedad cuando se considera la precisión media a la precisión simple y la precisión doble a la precisión cuádruple?

+0

Mi recuerdo es que solo y doble difieren solo en el número de bits asignados a mantissa/exponente. Sin embargo, no tengo una referencia, así que esta no es una respuesta. Pero +1, es una buena pregunta. – kdgregory

Respuesta

5

Sí, un doble puede representar cualquier número que pueda un flotador. Del mismo modo para la precisión cuádruple, etc.

Un número de coma flotante se representa en un formato como 1.01b x 2^-1 (0,625, en este caso). Los componentes significativos del número son el significado, que es básicamente un número binario con un punto de base generalmente justo después del primer dígito, y el exponente.

La única diferencia importante entre los formatos binarios de coma flotante es la cantidad de bits para cada componente. Cuantos más bits usa el número, más bits están disponibles para cada parte. Entonces un "flotante" de 32 bits podría tener 1.01000000000000000000000 para el significado, y un "doble" (64-bit) tendría aproximadamente 50 dígitos después del punto. Esto significa que cualquier número que sea exactamente representable en un flotante también es exactamente representable en un doble, ya que tiene mayor precisión (leer: dígitos más significativos) y mayor rango. Es similar a cómo una variable entera de 64 bits puede contener cualquier entero de 32 bits; los bits adicionales simplemente no se usan.

Por supuesto, cualquier bit que haya sido cortado debido a un error de redondeo no volverá al número cuando lo convierta en un doble, es decir, el 0.3 que tiene en su flotante, siendo un resultado inexacto como 0.2999999875 o algo así (no tengo ganas de calcular), no se acercará a 0.3 cuando lo convierta en un doble; seguirá siendo 0,2999999875. Si desea una aproximación más cercana, deberá volver a hacer los cálculos con dobles desde el principio.

3

Sí. De hecho, puede hacer una afirmación aún más fuerte: cada producto de dos números de precisión simple es representable exactamente en doble precisión (lo mismo para la mitad y solo o doble y cuádruple).

Cuestiones relacionadas