Redondeos matemáticos


Seguramente los lectores habituales se extrañen de este post: "¿Es que no tiene que ver con aspectos técnicos de informática?". Sin embargo, los redondeos tienen mucho que ver con informática.

Veremos algunos errores típicos, así como distintos problemas de redondeo.

Cuando 0.1 + 0.2 == 0.30000000000000004

¿Por qué?

Fácil: A veces olvidamos que los ordenadores trabajan en binario, y no es fácil representar números decimales. Por eso, en algunas situaciones se dan casos como éste, en los que no se puede representar una cifra determinada. Por eso el ordenador decide mostrar el resultado más aproximado.

Pero... 0.1 + 0.2 + 0.1 = 0.4

Correcto. Eso se debe a distintas técnicas de recuperación de errores que aplica el ordenador de forma automática. Están basados en teoremas matemáticos más o menos fáciles de entender, pero no entraré en más detalles, dado que tampoco lo he estudiado en detalle. Si alguien está verdaremente interesado, le sugiero que se lea el paper What Every Computer Scientist Should Know About Floating-Point Arithmetic.

Truncar

Ésta es la parte más fácil. Si queremos redondear un número, lo más fácil es truncarlo. Esta operación consiste en eliminar los decimales y quedarnos sólo con la parte entera. Ya está redondeado.

El problema es que, habitualmente, no es lo que queremos, ya que puede ocasionar errores muy graves de redondeo :D

Redondeo

Lo más habitual es recurrir a algún tipo de redondeo, de manera que si el número que queremos cortar es mayor que 5 aplicamos el valor siguiente y, si es menor, el anterior. Pero... ¿Y si fuera, justamente 5?

Supongamos que son Euros. Imaginad, por un momento, que estamos haciendo una aplicación para un banco. Si el redondeo no está bien hecho, es posible que podamos comprar algo por 0.005 euros y volver a venderlo, ganando 0.01 euros en el proceso debido a un error de redondeo.

Puede parecer una minucia, pero pensad que esos cálculos se realizan millones de veces en una hora. zillones de veces en un día.

Por eso existen distintos tipos de redondeo: - mitad arriba: si la cifra a cortar es 5, se redondeo hacia arriba. - mitad abajo: si la cifra a cortar es 5, se redondea hacia abajo. - medio camino a cero: si es positivo, se redondea hacia abajo, y si es negativo, hacia arriba. - medio camino desde cero: si es positivo, se redondea hacia arriba, y si es negativo, hacia abajo. - mitad al par: se redondea al número par más próximo. - mitad al impar: se redondea al número impar más próximo. - redondeo escolástico: al azar entre el siguiente y el anterior, con igual probabilidad. - alternativo: ir cambiando entre arriba y abajo.


Comentarios

Comments powered by Disqus