![]() |
Re: Sinus Funktion spinnt?!
Nun, wenn Du einen Wert auf 0 Prüfen willst,
kanst Du das mit isZero aus der Math Unit testen. Hier ein Auszug aus der Hilfe: Zitat:
Klaus |
Re: Sinus Funktion spinnt?!
Dabei sollte man erwähnen, dass Epsilon (in der Mathematik) eine reelle Zahl ist, die beliebig klein, aber größer als 0 ist. Soll also praktisch eine Art Wert sein, der "noch" als 0 gilt.
Du könntest übrigens versuchen, für Digits 0 oder 1 oder sowas anzugeben. Dann sollten die Nullen weg sein. |
Re: Sinus Funktion spinnt?!
Hallo,
vielleicht kannst du die Werte etwas vorbehandeln:
Delphi-Quellcode:
Gruß Hawkeye
function Fuzzy (aValue: Double; aEpsilon: Double = 1E-9): Double;
begin if (Abs(aValue) < aEpsilon) then Result := 0.0 else Result := aValue; end; begin Label1.Caption := Format('x: %.3g', [Fuzzy(x)]); Label2.Caption := Format('y: %.3g', [Fuzzy(y)]); end; |
Re: Sinus Funktion spinnt?!
Das sieht interessant aus, aber was macht das? :?:
|
Re: Sinus Funktion spinnt?!
Die Funktion Fuzzy liefert für (absolut gesehen) sehr kleine Werte eine 0, alle anderen Werte werden unverändert zurückgegeben. Die Genauigkeit läßt sich optional über den Parameter aEpsilon vorgeben, der Defaultwert ist 1E-9.
Bei der Format-Funktion bewirkt die Angabe "%g" das, was FloatToStr mit dem Parameter ffGeneral erreicht - überflüssige Nullen am Ende werden abgeschnitten. In der Online-Hilfe von Delphi findest du eine genaue Beschreibung der Parameter unter dem Stichwort "SysUtils.Format Routine". Gruß Hawkeye |
Re: Sinus Funktion spinnt?!
Könnte man anstatt der Funktion Fuzzy nicht auch die Funktion SimpleRoundTo aus der Unit Math verwenden? Diese würde auch für andere eventuelle, minimale Ungenauigkeiten einspringen.
(function SimpleRoundTo(const AValue: Double, const ADigit: TRoundToRange): Double;) //ADigit gibt die Rundungsgenauigkeit, also aEpsilon an |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:34 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