[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