How to round an integer up to the nearest multiple of 'multiple' in Pascal

1 Answer

0 votes
program RoundUpProgram;

{
    roundUp(n, multiple)
    --------------------
    Rounds the integer n *up* to the nearest multiple of `multiple`.

    Mathematically:
        result = ceil(n / multiple) * multiple

    We use integer arithmetic for efficiency:
        (n + multiple - 1) / multiple  → smallest integer ≥ n/m
}

function roundUp(n, multiple: Integer): Integer;
begin
    if multiple <= 0 then
    begin
        // Defensive programming: avoid undefined behavior.
        // In real-world code, you'd throw or handle this differently.
        roundUp := n;
        Exit;
    end;

    // Efficient integer rounding up:
    roundUp := ((n + multiple - 1) div multiple) * multiple;
end;

begin
    WriteLn('roundUp(53, 20)  = ', roundUp(53, 20));
    WriteLn('roundUp(68, 30)  = ', roundUp(68, 30));
    WriteLn('roundUp(7, 100)  = ', roundUp(7, 100));
    WriteLn('roundUp(119, 100) = ', roundUp(119, 100));
    WriteLn('roundUp(781, 100) = ', roundUp(781, 100));
    WriteLn('roundUp(1026, 100) = ', roundUp(1026, 100));
    WriteLn('roundUp(11689, 1000) = ', roundUp(11689, 1000));
end.


{
run:

roundUp(53, 20)  = 60
roundUp(68, 30)  = 90
roundUp(7, 100)  = 100
roundUp(119, 100) = 200
roundUp(781, 100) = 800
roundUp(1026, 100) = 1100
roundUp(11689, 1000) = 12000

}

 



answered Jul 22 by avibootz
edited Jul 22 by avibootz

Related questions

1 answer 172 views
...