jueves, 15 de noviembre de 2007

Esta milmillonésima corre de mi cuenta


Hoy, en clase, nos ha pasado una cosa curiosa. Hablando de la aproximación por redondeo, les comentaba que la propia calculadora al presentar como resultado un número periódico redondeaba la última cifra.

Así, les propuse como ejemplo 5/3 y efectivamente salía 1,666666667. Pero un alumno siguió experimentando y me mostró el resultado de 7/9, ¡0,777777777! y no 0,777777778 como sería la correcto.

Experimentando con otros números, los resultados de dividir entre 3 suelen expresarse bien redondeados, pero hay muchos cocientes incorrectos, como 5/9 = 0,555555555.

Los cálculos están hechos con una Casio científica clásica (que tantos hemos crecido con ella) y son errores que no se reproducen por ejemplo en la Hoja de Cálculo.

¿Alguien sabe por qué ocurren?

5 comentarios:

Acido dijo...

Creo que es porque internamente representa un cierto número de cifras significativas, en ese caso 10 parece ser. Cuando es 1,6666...
internamente es 1,6666 66667
y puede enviar a la pantalla las 10 cifras.

Pero en los casos 0,... internamente el cero no cuenta. Ej: 0,777777777 internamente es 7,7777 77778 * e-1
pero en pantalla aparece 0,77777 7777 (el 8 siguiente no cabe en pantalla). Obviamente es una chapuza ya que si no cabe ese 8 el 7 que sí cabe se debería redondear a 8 ya que sabemos que la cifra siguiente es mayor que 5.
Prueba a hacer 16/9 y te saldría 1,7777 77778
ó 70/9 = 7,7777 77778
Si haces 7/900 el resultado puede ser 7,7777 77778 e-3 (según la calculadora y el modo de visualización)

En Excel y muchos programas informáticos se usa una representación de números reales (con muchas cifras, no 10 ó 12 como muchas calculadoras)... Normalmente, los estándares de IEEE para coma flotante.
La parte entera se representa con bits y el exponente también. Curiosamente, los ordenadores no representan de forma exacta ciertos números con decimales !!
ej: 2,37 ... internamente es 10,0101... salen un montón de bits.

Acido dijo...

Téngase en cuenta que a pesar de que dije "los ordenadores no representan de forma exacta ciertos números con decimales", la visualización puede ser normal. No se notan, no se ven esas inexactitudes... porque la precisión es muy grande y el software sabe visualizar redondeando. Es decir, puede que 2,37 sea representado como 1.00101.. *2^+1

y eso sea 2,369999999999999999999999999999999

pero Excel nos muestra 2,37 porque sólo muestra un número de cifras (supongamos 12), pero no escribe 2,36999999999
ya que como la siguiente es 9 redondea a 2,3700 00000 00
y escribe 2,37

Excel sí visualiza bien el redondeo de la última cifra, pero la calculadora sólo a veces.

Acido dijo...

Perdón por las marcas comerciales, donde dije Excel quise decir "hoja de cálculo" xD

JM dijo...

Hola, creo que hay calculadoras que redondean a la siguiente unidad solo en el caso de que el decimal sea mayor que 5

goyo lekuona dijo...

Hola a todos ( y a Acid en especial)
te ha quedado muy bonita la explicación, pero ese sistema de representación genera muchisimos problemas a la hora de trabajar con decimales. Es frecuente que en calculos sencilos que deben dar 0 la hoja de claculo te deci que no, que no es creo, por que alli por el decimal 15. hay algo y te chafa la hoja de cálculo.
y te lo digo con conocimiento de causa, que soy un gran defensor de las hojas de cálculo, a pesar de las jugarretas que hacen a veces ( y siempre cuando menos te lo esperas. Si es que Murphy era un optimista)
De manera que el asunto no es baladí.

NaCl U2 Yo!