[pyar] Punto flotante binario grandote (era: Int anti-intuitivo)

Facundo Batista facundobatista en gmail.com
Mie Nov 17 09:59:27 ART 2010


2010/11/16 QliX=D! [aka EHB] <qlixed en gmail.com>:

> In [5]: float("9999999999999999.0")
> Out[5]: 9999999999999998.0

¿Qué Python te hace eso? ¿en qué plataforma?

Python 2.6.6 (r266:84292, Sep 15 2010, 15:52:39)
[GCC 4.4.5] on linux2
>>> float("9999999999999999.0")
10000000000000000.0


> Se comporta de la misma HORRIBLE forma. Por la HORRIBLE presicion de Python.

No, la precisión es del punto flotante de tu microprocesador, no de Python.

Fijate si pudieras modificar la precisión:

>>> from decimal import Decimal, getcontext
>>> Decimal("9999999999999999.0") + 0
Decimal('9999999999999999.0')
>>> getcontext().prec = 15
>>> Decimal("9999999999999999.0") + 0
Decimal('1.00000000000000E+16')

(Le sumo 0 porque la precisión en Decimal se aplica en las
operaciones, el constructor nunca recorta ni nada).

Slds.

-- 
.    Facundo

Blog: http://www.taniquetil.com.ar/plog/
PyAr: http://www.python.org/ar/



More information about the pyar mailing list