[python-nl] grote getallen met grote precisie

Evert Rol evert.rol at gmail.com
Mon May 4 16:51:46 CEST 2009


> Mijn probleem in de kern is dit:
>>>> a = 1 + 10**22
>>>> a
> 10000000000000000000001L
>>>> a**2
> 100000000000000000000020000000000000000000001L
>>>> (a**2)**0.5
> 1e+22

Je kunt je ook afvragen of je de precisie werkelijk nodig hebt. In  
alle praktische gevallen kun je volgens mij gewoon aannemen:
 >>> a = 1e22+1
 >>> b = 1e22
 >>> a == b
True

en zal er in feite niets veranderen aan het uiteindelijke resultaat.
Alleen bij echt wiskundige problemen is de precisie nuttig, maar dan  
zou je Rob's oplossing kunnen gebruiken, of gewoon het getal niet  
uitschrijven maar de formule laten staan.

Overigens heeft numpy nog een float128 type, maar ook daar zul je  
vinden dat
 >>> a = numpy.float128(1e22+1)
 >>> b = numpy.float128(1e22)
 >>> a == b
True


   Evert



More information about the Python-nl mailing list