z.b. N = Sqr(7) = 3 => 3*3 =9; die Korrekte Integer Wurzel müsste Sqr(7) = 2 sein.
Vom Standpunkt von PB bei Berechung über die Floating Unit ist das Ergebnis 3 ja ok. Aber die mathematisch korrekte SqrInt() ist das nicht!
Bin da eben drüber gestolpert! Hab das jetzt mit einem Round gelöst
N = Round(Sqr(7), #PB_Round_Down)
Gibt es da eine bessere Lösung für???
Hier mal ein Testcode, der das Problem zeigt
Code: Alles auswählen
EnableExplicit
Define.i N, I
Define.f F
; Methode 1: ab I = 7 bzw I=13 ist N²>I
Debug "aufgerundete Wurzel"
For I = 1 To 49
N = Sqr(I)
Debug "I= " + Str(I) + " : Sqr= " + N + " : N*N = " + Str(N*N)
Next
Debug ""
Debug "Korrekte Integer Wurzel"
; Methode 2: korrekte Integer Wurzel N²<=I immer!
For I = 1 To 49
N = Round(Sqr(I), #PB_Round_Down)
Debug "I= " + Str(I) + " : Sqr= " + N + " : N*N = " + Str(N*N)
Next