AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Vergleich von Zahlen

Ein Thema von Beach · begonnen am 3. Mär 2020 · letzter Beitrag vom 6. Mär 2020
 
Beach

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

AW: Vergleich von Zahlen

  Alt 3. Mär 2020, 17:10
Das war QD
Außerdem bin ihc jemand der nur ab und zu aus Spaß sowas macht und dann immer offen ist, wenn er ERklärt bekommt was er falsch macht oder was man ordentlicher "sauberer" lösen kann.

Aber ich vermute das du auf
Code:
IF error then
anspielst? Da so eh der Vergleich auf TRUE gemacht wird?

So grob funktioniert das jetzt sogar. Allerdings scheint meine Funktion, die mit den String mit Dezimalpunkt in ein Float umwandelt (hier im Forum gefunden) die Nachkommastellen abzuschneiden.
Oder Ich runde irgendwo wo ich es im Moment nicht sehe. Habe ich "glatte" Zahlen (ohne Nachkommastelle) bekomme ich das passende Ergebnis.
Habe ich, als Beispiel Nachkomma stellen (Der Intervall ist immer 100,1, also wäre es richtig)
dann bekomme ich gesagt das mein Ergenis -1 (also ungültig) ist

Zitat:
Targets :
0.000000 100.100000 200.200000 300.300000 400.400000
Meine Funktionen

MyStrToFloat() hier im Forum gefunden.
Code:
 function MyStrToFloat(AString: string): double;
begin
  AString := StringReplace(AString, '.', DecimalSeparator, [rfIgnoreCase, rfReplaceAll]);
  AString := StringReplace(AString, ',', DecimalSeparator, [rfIgnoreCase, rfReplaceAll]);
  result := StrToFloat(AString);
end;
Meine eigene Funktion:
In Targets übergebe ich das Stringarray mit den einzelnen Werten.
Rückgeliefert werden soll der Intervall
in Values.TargetCount ist die Anzahl der vorhandenen Targets.

Code:
function CalculateStep(Targets: array of string): double;
  //Größe der Schrittweite, -1 wenn ungueltig
var
  i, j: integer;
  m, r: double;
  l: boolean;

begin
  i := 0;
  j := 0;
  r := 0;
  l := False;

  i := Values.TargetCount;
  m := MyStrToFloat(Targets[1]) - MyStrToFloat(Targets[0]);

  for j := 1 to i - 1 do
  begin
    if MyStrToFloat(Targets[j]) - MyStrToFloat(Targets[j - 1]) = m then
      l := True
    else
      l := False;
  end;

  if l then
    r := m
  else
    r := -1;

  Form1.Edit1.Text := FloatToStr(m);
  Form1.Edit2.Text := FloatToStr(r);
  Form1.Memo1.Text := ArrayToStr(Targets);

end;
MfG Jürgen
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz