Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save ricexen/e13769e78168cbf43e6029ddb41c329e to your computer and use it in GitHub Desktop.
Save ricexen/e13769e78168cbf43e6029ddb41c329e to your computer and use it in GitHub Desktop.
¿Por qué 0.1 + 0.2 = 0.30000000000000004?

La historia comienza cuando desperté esta mañana (19 dic 2019). Estaba escroleando twitter como de costumbre, cuando de repente… vi (https://twitter.com/ireaderinokun/status/1207396643978534913?s=19)[ese video], me quede sorprendido, y decepcionado, eso! es lo que javascript con los números? Me pregunté. Eso... no es algo lógico y no es como si se halla hecho eso al azar…

Nosotros solo vemos lo que estamos entendiendo al leer resultados. Pero quién piensa en las pobres computadoras!... Yo, ingenuo y un poco sentimental, creí que se trataba de un tema matemático, sin embargo cuan errante me encontraba al toparme ante mis propios pensamientos doblegados ante la ya adyacente realidad. 0.1 + 0.2 es igual a casi 0.3... pero porque? me pregunté. Intrigado me comprometi a encontrar la verdad, o al menos lo lógico en esta fina línea. Propuesto a ello comencé a aventurarme en el mar de información por hoy todos conocido. Google tratándome igual que todos los días como un pedazo de número entre sus millones de resultados me arrojo el preciso resultado que esperaba. La respuesta sonando como un - ¡por fin! - que mi cerebro impaciente había estado esperando, pescada con la red adecuada. Sencillo… era un flotante binario. Por lo mismo 0.1 + 0.2 no se suma como humano porque las computadoras no hablan humano, ellas hablando en su electrico lenguaje sólo comprenden que es encendido y apagado, abstrayendo, 0 y 1. Aun siendo JavaScript el lenguaje víctima esta vez, de los números con punto decimal no se salva ninguno. Según la relación que cada lenguaje ha tenido con su objetivo, cada uno ha sabido como lidiar con el problema. Aun así es fehaciente el problema de la representación racional en una computadora. Tal es el dilema que la existencia de (http://0.30000000000000004.com/)[0.30000000000000004.com] es una prueba de como lidiar con él, no de como resolverlo. Nuestras computadoras no tienen la capacidad de representar con la exactitud lo que nosotros nos imaginamos los números racionales, ellas tienen que traducir nuestro número imaginado a una traducción de sus nativos números enteros, 0 y 1.

Y así como pasa al jugar con google translate pasando una oración entre lenguajes, ellas intentan acercarse en su mayor medida hasta ya no poder alcanzar nuestra imaginación. Los invito a probarlo y tratar de enseñarle a ellas, ahora casi nuestras amigas, como es que se hace para traducir nuestra racionalidad.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment