Registriert seit: 30. Nov 2007
Ort: Rum
137 Beiträge
Delphi 10.4 Sydney
|
AW: Unterschiedliche Ergebnisse beim Runden
14. Aug 2017, 20:37
Hallo,
für das kaufmännische Runden verwende ich folgende Funktion:
Delphi-Quellcode:
function xRound(e: Extended; d: Integer ): Extended;
var
nWert1: Extended;
nTemp1: Currency;
begin
{ Zuerst Zahl multiplizieren, damit diese als Currency arbeiten kann
damit bei xRound(2.51 * (100 - 74.5) / 100, 4) = 0.6401 auskommt und nicht
0.64 }
// Wenn Grenzwerte überschritten werden, wird geschützt gearbeitet
if (d>4) or (abs(e)>999999) then begin
try
nTemp1 := e * IntPower(10, d - 1);
except
Result := e;
exit;
end;
end
else begin
nTemp1 := e * IntPower(10, d - 1);
end;
if nTemp1 < 0.0 then
nTemp1 := Trunc(nTemp1 * IntPower(10, 1) - 0.5 ) / IntPower(10, 1)
else
nTemp1 := Trunc(nTemp1 * IntPower(10, 1) + 0.5 ) / IntPower(10, 1);
nWert1 := nTemp1 / IntPower(10, d - 1);
Result := nWert1;
end;
mfg
Thomas Feichtner
|
|
Zitat
|