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