val := 22.65;
val := Math.SimpleRoundTo( 22.65, -1 ); // erwartet hätte ich 22.7 als Ergebnis, ich bekomme aber 22.6 - warum???
Das kann ich leider nicht nachvollziehen: Wenn ich aus System.Math.pas
SimpleRoundTo(..) direkt in mein Projekt kopiere
Delphi-Quellcode:
function SimpleRoundTo(const AValue: Extended; const ADigit: TRoundToRange = -2): Extended;
var
LFactor: Extended;
begin
LFactor := IntPower(10.0, ADigit);
if AValue < 0 then
Result := Int((AValue / LFactor) - 0.5) * LFactor
else
Result := Int((AValue / LFactor) + 0.5) * LFactor;
end;
erhalte ich in beiden Fällen den
exakt gerundeten Wert:
Delphi-Quellcode:
System.Math.SimpleRoundTo(22.65, -1 ) = 2.27000000000000E+0001
SimpleRoundTo(22.65, -1 ) = 2.27000000000000E+0001 // lokale Kopie