Einzelnen Beitrag anzeigen

AndyDF

Registriert seit: 6. Sep 2006
Ort: Allgäu
92 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

Anzahl der Nachkommastellen von Double ermitteln

  Alt 13. Sep 2018, 09:48
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.
Andreas Blenk

Geändert von AndyDF (13. Sep 2018 um 09:55 Uhr)
  Mit Zitat antworten Zitat