Forum: Algorithmen, Datenstrukturen und Klassendesign
by Uwe Raabe,
22. Nov 2017
Dank der diversen FloatHelper gibt es das bereits:
var
myFloat: Single; // oder Double, Extended
{ Abfragen }
if myFloat.IsPositiveInfinity then...
if myFloat.IsNegativeInfinity then...
if myFloat.IsInfinity then... // prüft beides
{ auch }
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Uwe Raabe,
21. Nov 2017
Das ist schon richtig! Allerdings lässt sich gerade 90 schon exakt darstellen. Daher besteht berechtigte Hoffnung, daß bei Verwendung von Grad statt Radians die Singularitäten schon erkannt werden können bevor man in Radians umrechnet.
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Uwe Raabe,
21. Nov 2017
Das kann man auch in der System.Math so nachlesen (hier nicht relevante Compiler-Direktiven entfernt):
{ The following constants should not be used for comparison, only
assignments. For comparison please use the IsNan and IsInfinity functions
provided below. }
NaN = 0.0 / 0.0;
Infinity = 1.0 / 0.0;
NegInfinity = -1.0 / 0.0;
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Uwe Raabe,
20. Nov 2017
Da zum Delphi-Sprachumfang aber nun mal keine tand-Funktion gehört (Delphi 5 kannte noch nicht einmal tan), kann man sich ja bei Bedarf was Passendes selbst programmieren. Mach doch mal einen Vorschlag so wie du es dir vorstellst.
Kleine Anmerkung am Rande:
Die Delphi Tan-Funktion wird je nach Zielplattform auf eine eigene Implementierung namens Tangent in System.pas weitergeleitet....
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Uwe Raabe,
20. Nov 2017
Dummerweise nimmt die Funktion aber keine Grad an sondern Radians. Daher werden die 90° mit einer nur begrenzt genauen Repräsentation von π multipliziert, was dann im Ergebnis eben nicht genau π/2 entspricht.