¿Cuál es la máxima imprecisión que uno puede enfrentar al usar un decimal de coma flotante de 32 bits?

La máxima imprecisión que puede encontrar mientras que el resultado en una representación particular está determinado por la diferencia (máxima) entre dos números sucesivos en la representación particular. A diferencia de los enteros donde la diferencia es uniforme (a saber, 1); la diferencia crece exponencialmente en números de coma flotante a medida que los números se hacen más grandes. Entonces, la diferencia máxima es la diferencia entre los dos números más grandes en la representación.

En IEEE 754 Binary32 (el estándar omnipresente utilizado en la aritmética de coma flotante de 32 bits) representación de coma flotante:
Número más grande: [math] \ Delta _1 = (2-2 ^ {- 23}) \ times 2 ^ {127} [/ math]
Segundo número más grande: [math] \ Delta _2 = (2-2 ^ {- 22}) \ times 2 ^ {127} [/ math]
Diferencia: [matemáticas] \ left | \ Delta _2 – \ Delta _1 \ right | = (2 ^ {- 22} -2 ^ {- 23}) \ veces 2 ^ {127} = 2 ^ {104} [/ matemáticas]

Un número entre [math] \ Delta _1 [\ math] y [math] \ Delta _2 [/ math] se redondeará al más cercano; así que el error de redondeo máximo será la mitad de la diferencia obtenida anteriormente, es decir, [matemática] 2 ^ {103} \ aproximadamente 10 ^ {31} [/ matemática], ¡lo cual es bastante grande! Sin embargo, todo el punto de la representación de punto flotante es mantener el error relativo constante (y pequeño, obviamente) mientras que el error absoluto puede variar. En este caso, el error relativo es [matemática] \ frac {2 ^ {103}} {\ Delta _1} = (2 ^ {24} -2) ^ {- 1} \ aprox 0.00000596 \% [/ matemática].

Notas:

  1. La figura anterior representa la máxima imprecisión al representar un número real particular en coma flotante. Al usar números de coma flotante en aritmética, estos errores pueden propagarse y dar lugar a errores más grandes.
  2. El método al que llegamos al resultado de la imprecisión involucra detalles técnicos sobre los números de coma flotante (rango de la mantisa, exponentes sesgados, etc.). Me encantaría ampliar el método a pedido.

Supongo que se refiere al punto flotante de precisión simple IEEE 754.

Para representar un número real particular, la precisión simple le proporciona al menos 7 dígitos de precisión decimal.

Sin embargo, si realiza una aritmética arbitraria con estos números, el error no tiene límites. Considere el número decimal [matemática] 0.1 [/ matemática], que cuando se almacena con precisión simple resulta ser [matemática] 0.100000001490116119384765625 [/ matemática]. El error está en el orden de [matemáticas] 10 ^ {- 9} [/ matemáticas]. Pero si agrega 10 de estos juntos, el error se convierte en [matemática] \ aprox 10 ^ {- 8} [/ matemática], si agrega 100, [matemática] 10 ^ {- 7} [/ matemática], etc.