Hallo,
ich würde gerne von einer Double-Zahl ermitteln, wieviele Nachkommastellen diese hat.
Hört sich leichter an als es dann tatsächlich ist - oder ich sitze auf dem Schlauch.
Bisher habe ich hierfür folgenden Code gehabt, der zunächst auch funktioniert hat:
Delphi-Quellcode:
function GetDecimalPlaces(const AValue: Double): Integer;
var
fFracValue : Double;
begin
Result := 0;
fFracValue := Frac(AValue);
if fFracValue > 0 then
fFracValue := SimpleRoundTo( fFracValue + 0.00000000001, -10)
else if fFracValue < 0 then
fFracValue := SimpleRoundTo( fFracValue - 0.00000000001, -10);
if fFracValue = 0 then
exit;
if fFracValue < 0 then
Result := Length(FormatFloat('0.#################',fFracValue))-3
else
Result := Length(FormatFloat('0.#################',fFracValue))-2;
end;
Rufe ich die Methode nun wie folgt auf:
GetDecimalPlaces(4512985.95);
dann erhalte ich: 17.
Gewünscht wäre: 2
Ich denke, das passiert wegen der Umwandlung zwischen Double und Extended Zahlen.
Meine Frage ist:
Hat einer eine Idee, wie ich zuverlässig von beliebigen Double Werten die Anzahl der Nachkommastellen ermitteln kann?
Danke.