function RoundX(v: Double): Double; var APower: Integer; ANeg: Boolean; begin if IsZero(v) then Result := 0 else begin APower := 0; ANeg := v < 0; if ANeg then v := -v; while v < 1 do begin v := v * 10; Dec(APower); end; while v > 10 do begin v := v / 10; Inc(APower); end; if not IsZero(v - Trunc(v)) then Result := (Trunc(v) + 1) * power(10, APower) else Result := Trunc(v) * power(10, APower); if ANeg then Result := -Result; end; end;
RoundX(1.5) = 2
RoundX(123) = 200
RoundX(-1.5) = -2
RoundX(-123)=-200