[pyar] En python los enteros no tienen límite, y los float?

Facundo Batista facundobatista en gmail.com
Mar Ago 17 13:27:49 ART 2010


2010/8/17 Claudio Freire <klaussfreire en gmail.com>:

> Ojo que decimal, aunque muy guachiguau, es... "decimal".

Y... sí.


> Float es base2, decimal base10. No es pequeña diferencia a veces. Ni en
> performance, ni en temas de precisión aritmética.

Sí, las diferencias corren por varios lados:

- Performance: hoy por hoy Decimal es Python, y float es silicio. Imbatible.

- Precisión: en float es fija, en Decimal es variable, como decía arriba:

Por otro lado, *ambos* son punto flotantes, y *ambos* sufren errores
de representación.


> Ej: pasar de float a decimal a float, por esto de la base, no es
> "idempotente":

Mirá, mirá:

>>> import decimal
>>> tercio = decimal.Decimal(1) / 3
>>> tercio
Decimal('0.3333333333333333333333333333')
>>> ftercio = float(tercio)
>>> ftercio
0.3333333333333333
>>> dtercio = decimal.Decimal.from_float(ftercio)
>>> dtercio
Decimal('0.333333333333333314829616256247390992939472198486328125')
>>> float(dtercio)
0.3333333333333333

(En Python 2.7 o 3.1)

Slds.

-- 
.    Facundo

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



More information about the pyar mailing list