Einzelnen Beitrag anzeigen

Thomas Feichtner

Registriert seit: 30. Nov 2007
Ort: Rum
137 Beiträge
 
Delphi 10.4 Sydney
 
#12

AW: Unterschiedliche Ergebnisse beim Runden

  Alt 14. Aug 2017, 19: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
  Mit Zitat antworten Zitat