El blog de cubells

Precisió decimal en python

S'ha d'anar amb cura quan es treballa amb números Float en Python. Si no pots trobar-te amb resultats inesperats com aquestos:

cubells@portatil:/tmp$ python
Python 2.7.15+ (default, Oct  2 2018, 22:12:08) 
[GCC 8.2.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 0.1 + 0.2
0.30000000000000004
>>> round(2.675, 2)
2.67
>>> sum = 0.0
>>> for i in range(10):
...     sum += 0.1
... 
>>> sum
0.9999999999999999
>>> 9999999999999999.0 - 9999999999999998.0
2.0
>>> 

Això és ben conegut per la seua representació aproximada als nostres ordinadors, però no deixa de ser sorprenent.

I no solament passa en python, eh!.

Sense comentaris encara. Comenta ara