Por qué 0.1 + 0.2 es 0.30000000000000004

Por qué la coma flotante binaria hace que 0.1 más 0.2 salga 0.30000000000000004, y cómo esta calculadora lo redondea de vuelta a un 0.3 limpio.

Escribe 0.1 + 0.2 en casi cualquier calculadora que trabaje con coma flotante binaria y la respuesta en bruto es 0.30000000000000004, no 0.3. Esta calculadora produce el mismo valor internamente y luego lo redondea para mostrarlo, así que ves 0.3. El causante es un desajuste de bases: los humanos escribimos números en base 10, las computadoras los guardan en base 2, y 0.1 no existe exactamente en base 2.

Ideas clave

  • 0.1 + 0.2 es 0.30000000000000004 en coma flotante binaria, en todos los lenguajes.
  • 0.1 en binario es un patrón que se repite, 0.0001100110011….
  • Esta calculadora redondea los resultados a 12 cifras significativas, así que muestra 0.3, no el doble en bruto.
  • El valor almacenado de 0.1 sale 0.10000000000000000555111512312578….

De dónde salen los dígitos extra

Ya sabes que algunas fracciones no encajan limpiamente en base 10. Un tercio es 0.333…, repitiéndose para siempre, porque 3 no es un factor de 10. Las computadoras guardan números en base 2, donde las únicas fracciones limpias tienen potencias de dos en el denominador: mitades, cuartos, octavos. Una décima no está en esa lista. En binario, 0.1 es 0.0001100110011…, repitiéndose para siempre, exactamente como se repite un tercio en decimal.

Un número de doble precisión tiene 53 bits para los dígitos, así que la expansión binaria infinita se corta. El valor guardado cuando escribes 0.1 es 0.1000000000000000055511151231257827021181583404541015625. Está cerca de 0.1 pero no es igual. Suma dos de esos valores ligeramente inexactos y los errores no se cancelan; se apilan, y la suma aterriza un paso más allá de 0.3. De ahí 0.30000000000000004. Esto es el estándar IEEE 754, implementado en prácticamente todos los procesadores y lenguajes, así que la misma respuesta aparece en JavaScript, Python, C y Excel.

Qué hace esta calculadora al respecto

El contrato de funcionamiento de este sitio está detallado en la guía de aritmética de coma flotante: cada resultado se redondea a 12 cifras significativas antes de mostrarse. Un doble lleva unas 15 a 17 cifras fiables, así que redondear en 12 conserva cada dígito en el que se puede confiar y elimina los últimos, que es exactamente donde vive el ruido acumulado.

Ejemplo resuelto 1: escríbelo. En la calculadora principal, escribe 0.1+0.2. La pantalla devuelve 0.3. El doble subyacente es 0.30000000000000004, pero la regla de pantalla lo esconde. Haz el mismo truco en la otra dirección con 0.3-0.2: el resultado en bruto es 0.09999999999999998, y la pantalla muestra 0.1. La multiplicación también lo hace: 1.1*3 guarda 3.3000000000000003 y muestra 3.3.

Cuando la respuesta genuinamente no se puede fijar, la calculadora no finge. Escribe 1/3 y muestra 0.333333333333, doce tres y luego se detiene. La guía de cifras significativas explica exactamente cómo funcionan ese redondeo y esos límites de pantalla.

Cuándo importa la diferencia

Para la aritmética diaria, los deberes y las estimaciones de ingeniería, 12 cifras fiables son mucha más precisión de la que justifica cualquier medición. Importa en tres situaciones más estrechas, todas descritas en la guía de aritmética de coma flotante:

  • Dinero. No guardes moneda como número de coma flotante. Los céntimos y centavos como enteros son la ruta segura, y los totales corrientes de errores diminutos son una clase conocida de error contable.
  • Comprobaciones de igualdad en código. Probar si dos flotantes calculados son iguales no es fiable; compara con una pequeña tolerancia en su lugar.
  • Cadenas largas de operaciones. Los errores se acumulan, y restar dos números casi iguales pierde la mayor precisión.

Ejemplo resuelto 2: fracciones exactas. Cuando necesitas una fracción exactamente correcta, la calculadora de fracciones mantiene los numeradores y denominadores como números enteros y nunca redondea. Escribe 1/3 + 1/3 + 1/3 allí y devuelve exactamente 1. Haz la misma suma con los decimales mostrados, 0.333333333333 + 0.333333333333 + 0.333333333333, y el resultado es 0.999999999999. Misma idea, mundos distintos.

Ejemplo resuelto 3: raíces y cuadrados. sqrt(2)^2 es un clásico campo de minas. Lógicamente, la raíz cuadrada de 2 al cuadrado es 2. En la calculadora el resultado en bruto es 2.0000000000000004, redondeado para pantalla a 2. Cuando necesitas el valor exacto, mantén la forma de raíz y evalúa una vez al final, que es lo que la referencia de funciones de la calculadora comenta bajo la tecla √.

También hay un límite de enteros que vale la pena conocer. Por debajo de 2^53 − 1 = 9,007,199,254,740,991, cada número entero es representable exactamente y la calculadora imprime todos sus dígitos. Por encima de esa línea, valores como 19! cambian a notación científica en lugar de reclamar una precisión que no existe.

Preguntas frecuentes

¿Es 0.1 más 0.2 realmente 0.3 o no?

En aritmética decimal exacta lo es. En coma flotante binaria, el resultado almacenado es 0.30000000000000004. Esta calculadora devuelve ese mismo valor internamente y redondea a 12 cifras significativas para mostrarlo, así que ves 0.3.

¿Es esto un error de la calculadora?

No. Es el estándar IEEE 754 que implementan todos los procesadores y lenguajes principales. Los programas y calculadoras que parecen evitar el problema lo esconden con redondeo de pantalla, exactamente como hace esta.

¿Cómo puedo obtener una respuesta exacta?

Usa la calculadora de fracciones para la aritmética racional, que nunca redondea, o mantén formas simbólicas como sqrt(2) y pi en la expresión hasta el paso final.

¿Por qué 1 dividido entre 3 muestra solo doce tres?

Porque un tercio no tiene representación exacta en ninguna base. La calculadora muestra doce cifras fiables y se detiene en lugar de fingir que el valor termina.