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