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