Zitat Zitat von Tridestaros Beitrag anzeigen
Seltsam, bei mir gibt er jetzt bei einer 1 1.00 zurück, also den richtigen Wert.
Aber gib mal 4 ein oder 100 und es kommt 2.001 oder 10.001 raus!
Könnte noch am ehesten an der internen Darstellung der Zahl liegen. Da die Zahlenspeicherung ja zu Basis zwei funktioniert, kann das 0.001, das du bei jeder Schleife dazuzählst, nicht ganz genau gespeichert werden. Bei einem Mal würde man das nicht merken, aber da bei der Berechnung der Wurzel aus 2 der Wert ja 2000 Mal addiert wird, ist die Iteration vor 2.001 wahrscheinlich nicht genau 2, sondern ganz knapp darunter. Dadurch wäre b² natürlich auch unter 4, und die Schleife würde erst bei der nächsten Iteration abbrechen.

Das eheste, was du dagegen tun könntest, wäre, 0.001 z.B. durch 0,0009765625 zu ersetzen, das ist 1/1024 und sollte dadurch, glaube ich, genau darstellbar sein. Allerdings würde es dann bei nicht-ganzen Wurzeln natürlich weiterhin zu Fehlern kommen.