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 decimales se guardan en binario, y muchos valores exactos en decimal 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 detalle.

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

Para dinero, C# tiene la respuesta integrada y conviene usarla siempre: el tipo decimal. Guarda los decimales en base 10, así que 0.1m + 0.2m da exactamente 0.3m. Es más lento que double y para importes eso no importa lo más mínimo.

📖 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)