Peculiaridades de sumar 0.1 y 0.2 en JavaScript

| Última modificación: 15 de marzo de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

En el mundo del desarrollo web, JavaScript destaca como uno de los lenguajes más utilizados. Sin embargo, incluso en su grandeza, tiene ciertas particularidades que pueden desconcertar incluso a los más experimentados. En este artículo, exploraremos una de esas peculiaridades: ¿por qué sumar 0.1 y 0.2 en JavaScript no es tan simple como parece?

El mundo de los números decimales en JavaScript

Antes de sumergirnos en el enigma de 0.1 y 0.2 en JavaScript, es esencial comprender cómo los números decimales, también conocidos como números de punto flotante (floating point), se manejan en este lenguaje. Los números decimales pueden ser un tanto escurridizos debido a la representación interna de los ordenadores y las limitaciones de precisión que conllevan.

La sorprendente suma: 0.1 y 0.2 en JavaScript

Ahora, llegamos al corazón del asunto: la suma aparentemente sencilla de 0.1 y 0.2 en JavaScript. En matemáticas, esta suma debería ser igual a 0.3, ¿verdad? Sin embargo, en el mundo de JavaScript, las cosas no siempre son tan simples. Cuando realizamos la operación 0.1 y 0.2 en JavaScript, el resultado es 0.30000000000000004. Esta discrepancia puede parecer desconcertante, pero tiene su raíz en cómo los números de punto flotante son almacenados y manipulados en el ordenador.

La precisión y la representación binaria

La raíz del enigma radica en la representación binaria de los números de punto flotante. Los ordenadores almacenan estos números en binario, lo que puede llevar a aproximaciones y errores de redondeo en ciertos cálculos. 0.1 y 0.2 en JavaScript, que parecen inofensivos en notación decimal, tienen representaciones infinitas en binario. Cuando se realiza la suma, el resultado se redondea para que encaje en la representación binaria, lo que lleva a la diferencia minúscula pero perceptible en el resultado.

La importancia en el desarrollo web y más allá

Ahora podrías preguntarte por qué esta peculiaridad es relevante en el desarrollo web y en la programación en general.? Si bien en la mayoría de los casos la diferencia entre 0.3 y 0.30000000000000004 puede no ser significativa, en situaciones donde la precisión decimal es esencial, como en cálculos financieros, podría causar problemas.

Consideremos una aplicación financiera en la que se efectúan cálculos complejos para determinar tasas de interés, inversiones o pagos a lo largo del tiempo. En tales contextos, incluso la más mínima divergencia en los valores calculados puede tener ramificaciones significativas en las decisiones comerciales y en la confiabilidad de los resultados proporcionados. Imagina una plataforma de gestión de inversiones que utilice JavaScript para realizar cálculos de rendimiento. Si la precisión de los cálculos se ve comprometida debido a estas diferencias de punto flotante, los inversionistas podrían tomar decisiones basadas en información inexacta, lo que podría llevar a pérdidas financieras no deseadas.

De manera similar, cuando se trabaja en aplicaciones científicas que implican mediciones extremadamente precisas, como en la investigación espacial o en la simulación de reacciones químicas, las diferencias de punto flotante pueden acumularse y afectar la confiabilidad de los resultados obtenidos. Un pequeño error en un cálculo puede generar un efecto dominó que distorsione los resultados finales y afecte a la validez de las conclusiones científicas.

Un consejo: Squash Commits

Un concepto relacionado con el desarrollo web es la práctica de squash commits. Al igual que en la suma de 0.1 y 0.2 en JavaScript, donde los detalles subyacentes pueden generar sorpresas, en el control de versiones, combinar varios commits en uno solo puede hacer que la historia del código sea más legible y manejable.

El cambio de vida a través de KeepCoding

Ahora que has explorado las peculiaridades de sumar 0.1 y 0.2 en JavaScript, ¿te gustaría adentrarte en el mundo del desarrollo web de manera más profunda? El Desarrollo Web Full Stack Bootcamp de KeepCoding te brinda la oportunidad de dominar no solo los intrincados aspectos de JavaScript, sino también todo el ecosistema de desarrollo web.

Imagina aprender de los mejores instructores, trabajar en proyectos prácticos y obtener habilidades codiciadas en el mundo tecnológico. Al finalizar el bootcamp, no solo serás un desarrollador web competente, sino que también habrás experimentado un cambio de vida. El sector tecnológico ofrece salarios atractivos y una estabilidad laboral que pocos otros campos pueden igualar.

Tu futuro está esperando, ¡pide información y hazlo realidad hoy mismo!

Alberto Casero

Alberto Casero es CTO en Watium, Fundador de Kas Factory & Coordinador del Bootcamp en Desarrollo Web.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Desarrollo Web

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado