Einzelnen Beitrag anzeigen

Rollo62

Registriert seit: 15. Mär 2007
3.908 Beiträge
 
Delphi 12 Athens
 
#14

AW: Case-Statement für Float-Werte

  Alt 16. Jun 2020, 14:02
Moin...
Zitat:
Wie kann ich das Problem lösen?
...den Eingangswert x 100 vor dem case.
Das sehe ich auch als Lösung an, also konkreter mal so in der Art:
Delphi-Quellcode:
function TfrmEditor.GetZoomFactorAsPercent(
  AZoomFactor: Single = 1): TibZoomFactorPercent;
begin
  Result := TibZoomFactorPercent.Custom;
  case Trunc(AZoomFactor * 100) of // Hier tritt der Fehler auf...
      10: Result := TibZoomFactorPercent.Percent10;
      25: Result := TibZoomFactorPercent.Percent25;
      50: Result := TibZoomFactorPercent.Percent50;
      75: Result := TibZoomFactorPercent.Percent75;
    100: Result := TibZoomFactorPercent.Percent100;
    125: Result := TibZoomFactorPercent.Percent125;
    150: Result := TibZoomFactorPercent.Percent150;
    175: Result := TibZoomFactorPercent.Percent175;
    200: Result := TibZoomFactorPercent.Percent200;
    250: Result := TibZoomFactorPercent.Percent250;
    300: Result := TibZoomFactorPercent.Percent300;
    400: Result := TibZoomFactorPercent.Percent400;
    500: Result := TibZoomFactorPercent.Percent500;
  end;
Alles mit "Wert = 0.10" KANN nicht funktionieren, also genausowenig mit case,
weil man float Werte nicht einfach vergleichen kann.
(Siehe unten die Vorschläge mit SameValue)
Deshalb wird es ein case mit float nicht geben können.
  Mit Zitat antworten Zitat