Ok, dann bin ich froh, dass es wahrscheinlich nur an Lazarus liegt, dass es bei mir nicht funktioniert. Ich habe mir jetzt einmal genau angeschaut, was SetPrecisionMode und SetRoundMode bedeutet. Für Single funktioniert das ganze vmtl., wenn ich SetPrecisionMode(pmSingle) verwende. Gibt es eine Möglichkeit, abzufragen, ob eine Zahl Single oder Double ist. Ich habe es mit
Delphi-Quellcode:
var
x1: Single
if x1 is Single then ...
versucht, aber führt zu einem Fehler: Class or interface type expected, but got "Single".
Ansonsten könnte ich wohl auch 2 überladene Versionen der Funktion verwenden:
Delphi-Quellcode:
function(aValue: Single; aPrecision: Integer): Single; overload;
function(aValue: Double; aPrecision: Integer); Double; overload;
Noch eine Frage zum Rundungsmodus rmTruncate: In der Hilfe steht hierzu: Truncates the value, rounding positive numbers down and negative numbers up.
Warum wird dann 44.6 (positive Zahl) auf 45 aufgerundet?
Danke für deine/eure Hilfe!