AD

¿Ya dominas lo básico? Un curso estructurado de C es la vía rápida para dar el salto.

Ver cursos de C en Udemy

Enlace de afiliado. No te cuesta nada extra.

🔧Lecciones de C
Lección 57 / 68

Cuidado con los errores de redondeo en coma flotante

En esta lección verás por qué 0.1 + 0.2 no da exactamente 0.3.

Los números decimales se guardan en binario, y muchos valores que en decimal son exactos no lo son en binario. El resultado se acerca muchísimo, pero no coincide.

El código de ejemplo suma valores decimales y muestra el resultado con muchos decimales para que la diferencia sea visible.

La consecuencia práctica es directa: nunca compares decimales con ==. Hay que comprobar si la diferencia es menor que una tolerancia pequeña: fabs(a - b) < 1e-9. Un if (total == 0.3) puede ser falso aunque en pantalla ponga 0.3.

Y para dinero, la regla es tajante: no se usan decimales. Se trabaja en céntimos con enteros. Los errores de redondeo acumulados en cálculos financieros han causado problemas reales y caros, y esta es la razón por la que existen los tipos decimales en las bases de datos.

📖 Código de referencia
✍️ Tu código
Escribe tu código y pulsa «Ejecutar»

🧪 Este sitio no puede compilar ni ejecutar C directamente, así que comprueba al instante si lo que escribiste coincide con el código de referencia (la corrección ocurre por completo en tu navegador; no se envía nada a ningún servidor).

🔗 El mismo tema en otros lenguajes

Mira cómo se escribe lo mismo en otro lenguaje.

Espacio publicitario (banner)
Espacio publicitario (en el artículo)