GUIDE 07

Error de coma flotante en la calculadora: por qué 0.1+0.2 y sin(π) parecen fallar

Por qué 0.1+0.2 da 0.30000000000000004 en doble precisión IEEE 754, cómo una pantalla de 12 cifras muestra 0.3, la corrección de sin(π), 170! y el desbordamiento, el límite de 2⁵³ y la cancelación catastrófica.

Si imprimes 0.1 + 0.2 en la mayoría de los lenguajes de programación, obtienes 0.30000000000000004. No hay nada roto: así es como los ordenadores guardan los números reales. Esta guía explica el formato de doble precisión IEEE 754 que usan SciKey y la mayoría del software numérico, cómo se notan sus límites en los resultados y cómo los gestiona la calculadora.

1. Doble precisión IEEE 754

Un número de doble precisión (binary64) ocupa 64 bits.

ParteBitsFunción
Signo1Positivo o negativo
Exponente11Qué potencia de 2
Mantisa52Cifras significativas (53 en la práctica, con un 1 inicial implícito)

53 bits significativos equivalen a unas 15 a 17 cifras decimales. El mayor valor representable es de unos 1.797×10³⁰⁸, y la distancia entre 1 y el siguiente número de doble precisión (el épsilon de la máquina) es 2⁻⁵² ≈ 2.22×10⁻¹⁶.

2. 0.1 no tiene una forma binaria exacta

Igual que 1/3 = 0.333… no termina nunca en decimal, 1/10 no termina nunca en binario: 0.1 = 0.0001100110011…₂, periódico. Se redondea a 53 bits, así que el valor guardado es en realidad

0.1000000000000000055511151231257827…

0.2 también se guarda un poco por encima. Su suma arrastra ambos errores hasta 0.3000000000000000444…, que es un número de doble precisión distinto del que guarda 0.3 (0.2999999999999999888…). Por eso el decimal más corto que identifica la suma es 0.30000000000000004.

Por el mismo motivo, 0.1×3 también da 0.30000000000000004. Los decimales cuyo denominador es una potencia de dos, como 0.5, 0.25 y 0.375, son exactos en binario y no tienen error.

3. Por qué la calculadora muestra 0.3 de todos modos

SciKey no muestra el valor interno en bruto: lo redondea a las cifras significativas elegidas (12 por defecto). Redondeado a 12 cifras, 0.30000000000000004 es 0.300000000000, es decir, 0.3. El error está en la cifra 17 y nunca llega a la pantalla.

Las calculadoras científicas de bolsillo hacen lo mismo: suelen calcular con unas 15 cifras internas y mostrar 10, de modo que ocultan los pequeños errores finales al mostrar. Solo cambia lo que se ve, así que el valor guardado sigue siendo 0.30000000000000004. Arrastrarlo a otros cálculos suele dejar errores del orden de 10⁻¹⁶, irrelevantes en la práctica.

4. Por qué sin(π) no es cero

En modo RAD, sin(π) debería ser exactamente 0. Pero π es irracional, y el número de doble precisión más próximo a π es unos 1.22×10⁻¹⁶ menor que el valor real. Cerca de π, el seno tiene pendiente −1, así que sin(π en doble precisión) ≈ 1.2246×10⁻¹⁶. El seno se calculó correctamente; la entrada nunca fue exactamente π.

SciKey lo corrige con estas reglas:

  1. En los modos DEG y GRAD, el argumento se reduce exactamente módulo 360° (400 gon), y los múltiplos de 90° devuelven valores exactos: sin(180) = 0, cos(90) = 0, y tan(90) no está definida, así que da error.
  2. En modo RAD, si el argumento coincide con un múltiplo entero de π con un error relativo inferior a 10⁻¹³, sin devuelve 0; si coincide con un múltiplo impar de π/2, cos devuelve 0 y tan da error.

Así, sin(π) muestra 0 en SciKey. La corrección solo se aplica cerca de los múltiplos de π y no afecta a ningún otro cálculo.

5. Números grandes: factoriales y desbordamiento

Los factoriales crecen deprisa. 170! ≈ 7.25741561531×10³⁰⁶ todavía cabe en doble precisión, pero 171! vale unos 1.24×10³⁰⁹, por encima del máximo de 1.797×10³⁰⁸. Por eso n! en SciKey acepta enteros de 0 a 170 y 171! da un error de desbordamiento.

En la práctica, los factoriales grandes suelen aparecer dentro de cocientes. El número combinatorio C(200, 3) es 200!/(3!·197!), pero nCr(200, 3) = 1313400 lo calcula directamente sin valores intermedios enormes. En probabilidad, tomar logaritmos y sumarlos es otra técnica habitual.

6. El límite de los enteros: 2⁵³

Con 53 bits significativos, todos los enteros hasta 2⁵³ = 9007199254740992 son exactos. Por encima, la doble precisión se salta enteros. 2⁵³ + 1 no se puede representar y se redondea a 2⁵³, así que 2^53+1-2^53 da 0, no 1: el 1 sumado desapareció al guardar la suma.

Por eso SciKey muestra binario, octal y hexadecimal solo para enteros con valor absoluto hasta 2⁵³; por encima, las cifras de menor peso no están garantizadas. Y por eso los números de tarjeta o identificadores de más de 16 cifras cambian sus últimas cifras cuando se tratan como números.

7. Cancelación catastrófica: el error más peligroso

Restar dos números casi iguales borra las cifras iniciales y deja sobre todo error. Esto se llama cancelación catastrófica.

Ejemplo 1. (1+1E-15)-1 debería dar 10⁻¹⁵, pero en doble precisión da 1.11022302463×10⁻¹⁵. Guardar 1 + 10⁻¹⁵ introduce un error de redondeo del orden de 10⁻¹⁶, y tras restar 1 ese error es el 11 % del resultado.

Ejemplo 2. Para x = 10⁸, √(x²+1) − x vale unos 5×10⁻⁹. Calculado directamente, √(10¹⁶+1) no se distingue de 10⁸ y el resultado es 0. Racionalizando se obtiene una forma equivalente sin la resta:

√(x²+1) − x = 1 / (√(x²+1) + x)

Guarda 10⁸ en x y 1/(sqrt(x^2+1)+x) devuelve 5×10⁻⁹ con precisión.

Ejemplo 3. 1 − cos(10⁻⁸) vale unos 5×10⁻¹⁷, pero cos(10⁻⁸) se redondea exactamente a 1 y el resultado directo es 0. Con la identidad 1 − cos x = 2 sin²(x/2), 2sin(0.5E-8)^2 da 5×10⁻¹⁷ (modo RAD).

Ningún número de cifras en pantalla arregla esto. Hay que reescribir la fórmula.

8. Consejos prácticos

  • No compruebes igualdades exactas. Para comparar dos resultados calculados, mira si su diferencia es lo bastante pequeña (por ejemplo, un error relativo de 10⁻¹²).
  • Trabaja el dinero en unidades enteras. Calcula en la unidad monetaria más pequeña como entero para que no se acumulen errores fraccionarios.
  • Evita restar números casi iguales. Racionaliza, usa identidades o reordena para eliminar la resta.
  • Usa cocientes con números grandes. Cuando los factoriales o las potencias se disparan, usa nCr, logaritmos o simplifica términos antes.
  • No redondees los resultados intermedios. El error de la doble precisión ronda 10⁻¹⁶, pero redondear a mano a cuatro cifras introduce errores del orden de 10⁻⁴. Los errores grandes suelen venir de las personas, no de la máquina.
  • Prueba a subir la pantalla a 15 cifras. Si un resultado parece raro, muestra más cifras para ver el valor interno y distinguir un error en las últimas cifras de una fórmula realmente equivocada.

→ Abrir la calculadora Referencia de funciones

Última actualización: 2026-09-24