Thema: FreePascal Vergleich von Zahlen

Einzelnen Beitrag anzeigen

Beach

Registriert seit: 3. Mär 2019
Ort: Kappel
46 Beiträge
 
FreePascal / Lazarus
 
#12

AW: Vergleich von Zahlen

  Alt 3. Mär 2020, 21:54
Wow. Viel Input...
Danke euch dafür.

[...]
Die Auswertung eines BOOLs sieht aber anders aus
ist 0 = False
nicht 0 = True

Tja, und nun kann es vorkommen, dass du von irgendwo ein "anderes" True bekommst und somit dein =True nicht mehr trifft.
[....]
Da mus ich mich nochmal in Ruhe mit auseinander setzen. Hab es zwar, glaube ich, Oberflächlich verstanden, aber werde da mal dein Beispiel testen um es auch wirklich zu verstehen.

Zitat:
[...]Was kommt wohl raus, wenn der String mal Beides drin hat?
z.B. 123.456,78
Dann knallt es.[...]
Womit du prinzipiell Recht hast, aber da ich hier ein fest vorgegebenes Format habe das nicht variabel ist, wird es in diesem speziellen Fall nicht vorkommen. Daher habe ich mich für diese Variante entschieden.
Zitat:
StrToFloat hat einen Parameter FormatSettings, den sollte man verwenden, wenn man ein bestimmtes Format haben möchte, welches nicht unbedingt der aktuellen Systemsprache entspricht.
Das erinnert mich an mein Buch. Sollte ich nochmal rauskramen. Dort ging es auch um das Problem mit dem Rundungsfehler.
Hatte ich aus den Augen verloren und muss ich mich nochmals mit beschäftigen.

Zitat:
[...]
Delphi-Quellcode:
  if i > 2 then // if i - 1 > 1 then
    l := MyStrToFloat(Targets[i - 1]) - MyStrToFloat(Targets[i - 2]) = m;

Genau, alle nachfolgenden Durchläufe überschreiben diese Variable und somit wird nur das Letzte ausgewertet.

Bei z.B. 0.000000 100.000000 123456789.012 -666 300.000000 400.000000
also 0.000000 100.000000 ... irgendwas ... 300.000000 400.000000 (2 vorn und 2 hinten gleich weit entfernt)
schlägt deine Prüfschleife fehl.
[..]
Das bringt mich, glaub ich auf den richtigen Weg meinen Fehler zu finden.
Wenn der Vergleich das erstemal UNWAHR ist muss ich abbrechen weil dann ja eigentlich die Bedingung, alle Werte im gleichen Intervall, bereits UNWAHR ist und ich auch gar nicht mehr weiter prüfen brauch.

[...]Was denn nun?
Haben die Daten 6 Nachkommastellen oder können sie auch Nachkommastellen enthalten.
Wieder mal unpräzise von mir ausgedrückt. Sorry.
Ich versuche es konkreter:

Das Format mit den 6 Nachkommastellen steht so fest. Die Werte werden meistens aber nur ganzzahlig sein. Also mit 6x 0 hinter dem Dezimalpunkt. Beispiel: 100.000000

Es könnte aber auch sein das ich keine ganzzahligen Werte habe. Als Beispiel 100,5 was dann als 100.500000 in den Daten dargestellt wird.
Daher muss ich wohl mit Fließkommazahlen arbeiten.
MfG Jürgen
  Mit Zitat antworten Zitat