Problema con funcion round
Antonio Castro
acastro en ciberdroide.com
Vie Feb 10 09:08:37 CET 2006
On Thu, 9 Feb 2006, nocreyente wrote:
> Un poco de teoria nunca esta de más:
> http://es.wikipedia.org/wiki/Coma_flotante
>
> Los decimales se almacenan en el formato de numeros de coma flotante.
> Esto no es algo propio de python, es algo asi en todos los sistemas
> informaticos. No es posible a partir de numeros enteros (los
> ordenadores tienen numeros enteros en base 2) conseguir precisión sobre
> los numeros reales. Entre el 1 y el 2 hay infinitos numeros reales.
>
> Espero que te sirva de algo, a mi como aficionado a la informatica, al
> menos me parece curioso :-)
Realmente es así. Para comprobar si dos números en coma flotante son
iguales alguna vez he definido una constante épsilon muy pequeña pero
suficientemente grande para que ningún error de precisión fuera
superior a esta constante y lo que hacía era restar las dos cantidades
y comprobar que el valor absoluto de la resta no fuera superior a ese
epsilón. Lo ideal es no usar coma flotante en ciertas aplicaciones.
Algunas implementaciones no usan el formato binario tal cual para
el dato numerico completo, y permiten trabajar con precision
arbitraria.
En linux por ejemplo el comando bc es una calculadora de precisión
arbitraria que no se como representa internamente los datos pero
Permite hacer por ejemplo cosas como esta:
scale=20000
sqrt(2)
Esto calcularía la raiz cuadrada de 2 exactamente con 20000 decimales
de precisión.
1.414213562373095048801688724209698078569671875376948........3014980593
En python tienen que haber distinto tipo de librerías para cálculo
numérico y quizás alguna para precisión arbitraria, no lo se.
--
Un saludo
Antonio Castro
Más información sobre la lista de distribución Python-es