[Python-Dev] Decimal data type issues
Batista, Facundo
FBatista at uniFON.com.ar
Tue Apr 13 16:20:00 EDT 2004
[Shane Hathaway]
#- Should we expect this to work?
#-
#- d = {}
#- d[Decimal('1.1')] = 1
#- print d[float('1.1')]
#-
No, because Decimal('1.1') is not the same number than float('1.1')!
>>> d = {}
>>> d[Decimal('1.1')] = 1
>>> d
{Decimal( (0, (1, 1), -1) ): 1}
>>> d[float('1.1')]
Traceback (most recent call last):
File "<pyshell#10>", line 1, in ?
d[float('1.1')]
KeyError: 1.1000000000000001
In part, this is why you can not compare Decimal with float, and why you can
not create a Decimal directly from float. You can use the alternative
method, but you should know what you're doing:
>>> Decimal.from_float(1.1)
Decimal( (0, (1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 1,
7, 8, 4, 1, 9, 7, 0, 0, 1, 2, 5, 2, 3, 2, 3, 3, 8, 9, 0, 5, 3, 3, 4, 4, 7,
2, 6, 5, 6, 2, 5), -51L) )
>>> Decimal.Decimal.from_float(1.1, 1)
Decimal( (0, (1, 1), -1L) )
. Facundo
More information about the Python-Dev
mailing list