Einzelnen Beitrag anzeigen

norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
509 Beiträge
 
Delphi 12 Athens
 
#1

Rundungsproblem in Delphi

  Alt 27. Jan 2025, 23:40
Hallo
ich habe ein ganz seltsamens Rundungsproblem, das ich mit einer bestimmten Zahl festgestellt habe.
Ich verwende folgenden Algorithmus zum Runden
Delphi-Quellcode:
function RoundToDecimals(rValue: Real; iDecimals: Integer): Real;
var
  Faktor,
  Wert: extended;
  iValue:Int64;
begin
  Faktor := IntPower (10, iDecimals);

  Wert:= rValue * Faktor;

  if rValue > 0 then
    Wert := Wert + 0.5
  else
    Wert := Wert - 0.5;

  iValue := trunc(Wert); // Hier zeigt Überwachte Ausdrücke iValue = 184132 und Wert = 184133 an

  Wert := iValue / Faktor;
  Result := Wert;
end;
Ich habe auch alle mögliche andere Vorschläge ausprobiert, aber keiner hat sicher geholfen.

Das Problem tritt nicht auf, wenn ich direkt RoundToDecimals(184.1325, 3) aufrufe.#
Sobald ich die Zahl 184.1325 aber aus einem EditFeld per TryStrToFloat('184.1325', rValue) ermittle, habe ich das Problem
Ich habe es auch mit Double und Extended probiert. Ohne Erfolg

Ich weiß keine andere Zahl, wo das auftritt, muss aber sicherstellen, dass immer korrekt gerundet wird.

Kann mir jemand sagen, woran das liegen könnte und wie ich es beheben kann.

Ich verwende Delphi 7

Vielen Dank
Gerd
  Mit Zitat antworten Zitat