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

_______________________________________________
Python-nl mailing list
Python-nl@python.org
http://mail.python.org/mailman/listinfo/python-nl

Antwoord per e-mail aan