Goedemiddag! Ik wil de korte zijde van een hele lange, smalle rechthoekige driehoek berekenen, daarbij gebruik ik Pythagoras met grote getallen:
c = (a**2 + b**2) ** 0.5 Waarbij: c == 1 + 10**22 (schuine zijde) a == 10**22 (rechte zijde) Het antwoord zou moeten volgen uit: b = (c**2 - b**2) ** 0.5 En nu: >>> c = 1 + 10**22 >>> a = 10**22 >>> b = (c**2 - a**2) ** 0.5 >>> b 141421356237.30951 Prima! En nu de controle: terugrekenen volgens Pythagoras >>> controle = (a**2 + b**2) ** 0.5 >>> controle == c False >>> controle 1e+22 >>> c 10000000000000000000001L De 1 gaat verloren. Ik begrijp dat dit komt door het gebrek aan precisie bij float waarden. Hoe kan ik dit omschrijven zodat ik de 1 niet verlies? Is er een float-alternatief die een zekere precisie behoudt? Bedankt alvast! Groeten uit een half-zonnig Den Haag, Robert-Reinder -- _______________________________________________ Python-nl mailing list Python-nl@python.org http://mail.python.org/mailman/listinfo/python-nl