domingo, 4 de maio de 2008

Python 2.4: Decimal

A forma com que números decimais são armazenados na memória do computador faz com que algumas vezes a representação deles psra nós seja inexata. Por exemplo, ao abrir o interpretador python:
>>> 1.1
1.1000000000000001

>>> 1.1+1.1
2.2000000000000002


No caso dos bancos de dados, por exemplo, o armazenamento desses números serial feito com o tipo DECIMAL ao NUMERIC, ao invés do float. Um exemplo de uso seria aplicações financeiras.

No Python 2.4 um novo tipo de dados foi adicionado, o Decimal, que permite a representação desses números de forma exata. Um exemplo!

Python 2.5.1 (r251:54863, Mar  7 2008, 03:39:23)
[GCC 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)] on linux2
Type "help", "copyright", "credits" or "license" for more information.

>>> import decimal
>>> decimal.Decimal("1.1")
Decimal("1.1")

>>> a = decimal.Decimal("1.1")
>>> a+a
Decimal("2.2")
>>> print(a+a)
2.2

>>>

Você pode ler mais sobre isso em http://www.python.org/doc/2.4.3/whatsnew/node9.html.
blog comments powered by Disqus