Por qué 0.1 + 0.2 no es igual a 0.3 en C# (y en la mayoría de los lenguajes)

Aprende por qué 0.1 + 0.2 ? 0.3 en C# y la mayoría de los lenguajes de programación modernos. Descubre cómo manejar la aritmética en coma flotante y las mejores prácticas para comparar valores numéricos. Q2BSTUDIO ofrece soluciones a medida en desarrollo de software, inteligencia artificial, ciberse

sábado, 16 de agosto de 2025 • 3 min de lectura • Equip Q2BSTUDIO

Inteligencia-Artificial-

Este articulo fue publicado originalmente en Hashnode y aqui tienes una version en espanol que explica por que 0.1 + 0.2 != 0.3 en C# y en la mayoria de los demas lenguajes

Muchos desarrolladores, incluso con experiencia, se sorprenden al ver que en C# la expresion Console.WriteLine(0.1 + 0.2 == 0.3) imprime False

¿Por que ocurre esto? El motivo esta en como se representan los numeros en coma flotante en binario. C# y la mayoria de lenguajes modernos siguen el estandar IEEE 754 para float y double. Los numeros decimales como 0.1 y 0.2 no pueden representarse exactamente en binario, por lo tanto la suma no es exactamente 0.3 sino un valor cercano, por ejemplo 0.30000000000000004

Ese pequeño error de representacion hace que 0.30000000000000004 != 0.3 y por eso la comparacion con == devuelve False. Este comportamiento no es exclusivo de C#. En Python print(0.1 + 0.2 == 0.3) da False. En JavaScript console.log(0.1 + 0.2 === 0.3) tambien da False. En Java la comparacion 0.1 + 0.2 == 0.3 retorna False. Todas usan aritmetica en coma flotante binaria y comparten la misma limitacion

Que hacer en lugar de usar == directamente? Una buena practica es comparar con una tolerancia epsilon. Por ejemplo una funcion AreEqual(a, b, epsilon = 1e-10) puede devolver abs(a - b) < epsilon. Esta tecnica es la recomendada para comparar valores en coma flotante en la mayoria de lenguajes

En C# cuando se necesita precision decimal, como en calculos financieros, se debe usar el tipo decimal, que usa base 10 y evita los problemas de redondeo intrinsecos de la representacion binaria. Por ejemplo decimal a = 0.1m; decimal b = 0.2m; entonces a + b == 0.3m sera True

Resumen de buenas practicas: no comparar numeros en coma flotante con ==; usar una epsilon adecuada para comparaciones; emplear decimal para aplicaciones monetarias o cuando se requiere precision exacta; recordar que este comportamiento proviene del estandar IEEE 754 y aparece en muchos lenguajes

En Q2BSTUDIO somos una empresa de desarrollo de software y aplicaciones a medida especializada en soluciones modernas. Ofrecemos software a medida, desarrollo de aplicaciones a medida, implementaciones de inteligencia artificial, ciberseguridad y servicios cloud aws y azure. Ayudamos a las empresas a adoptar servicios inteligencia de negocio e ia para empresas, crear agentes IA y soluciones con power bi para mejorar la visualizacion y analisis de datos

Nuestro equipo combina experiencia en software a medida y aplicaciones a medida con conocimientos avanzados en inteligencia artificial y ciberseguridad para entregar proyectos seguros y escalables. Ademas proporcionamos servicios cloud aws y azure para desplegar y mantener infraestructuras en la nube, y servicios inteligencia de negocio para transformar datos en decisiones

Si trabajas con numeros y modelos que requieren precision, ten en cuenta las limitaciones de la aritmetica en coma flotante y aplica las tecnicas adecuadas descritas aqui. En Q2BSTUDIO podemos asesorarte en la eleccion de tipos numericos, en implementaciones de inteligencia artificial, en agentes IA y en integraciones con power bi para que tus aplicaciones a medida sean precisas y confiables

Palabras clave relevantes: aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA, power bi

UNA PAUSA?

Juga una estona abans de marxar

ELS NOSTRES SERVEIS

Com et podem ajudar

Tens un projecte en ment?

Explica'ns la teva visió i la convertim en una solució de programari. Sigui quin sigui l'abast, fem realitat la teva idea.