C++
C#

Заокруживање реалних бројева

Три најчешће коришћена начина заокруживања реалног броја \(x\) су:

  • \(\left\lfloor{x}\right\rfloor\) – заокруживање наниже, тј. на највећи цео број који је мањи или једнак од \(x\). У језику C++ ово заокруживање врши се функцијом floor из заглавља <cmath>.

  • \(\left\lceil{x}\right\rceil\) – заокруживање навише, тј. на најмањи цео број који је већи или једнак од \(x\). У језику C++ ово заокруживање врши се функцијом ceil из заглавља <cmath>.

  • заокруживање на цео број који је најближи броју \(x\). У језику C++ ово заокруживање врши се функцијом round из заглавља <cmath>. У случају када је реални број тачно између два цела броја (нпр. 3.5), различити програмски језици користе различита правила о заокруживању. У језику C++ подразумевано је правило да се број заокружује навише у случају позитивних тј. наниже у случају негативних бројева који су тачно између два цела броја (заокруживање се врши на број даљи од нуле).

Важе и следећа тврђења.

  • Најмањи цео број строго већи од броја \(x\) једнак \(\left\lfloor{x}\right\rfloor + 1\).

  • Највећи цео број строго мањи од броја \(x\) једнак \(\left\lceil{x}\right\rceil - 1\).

Докажимо прво тврђење и формално. Ако је \(y = \left\lfloor{x}\right\rfloor\), тада је \(y \leq x < y + 1\). Зато је \(y + 1 = \left\lfloor{x}\right\rfloor + 1\) најмањи цео број који је строго већи од \(x\) (\(y\), који је први број мањи од њега, није такав). Друго тврђење се доказује веома слично.

Заокруживање користимо да бисмо нашли целобројна решења неких неједначина. Ако су \(n\) и \(k\) позитивни бројеви, тада важе следећа тврђења.

  • Највећи цео број \(x\) такав да је \(x\cdot k \leq n\) једнак је \(x=\left\lfloor{\frac{n}{k}}\right\rfloor\).

  • Најмањи цео број \(x\) такав да је \(x\cdot k \geq n\) једнак је \(x=\left\lceil{\frac{n}{k}}\right\rceil\).

  • Најмањи цео број \(x\) такав да је \(x\cdot k > n\) једнак је \(x=\left\lfloor{\frac{n}{k}}\right\rfloor + 1\)

  • Највећи цео број \(x\) такав да је \(x\cdot k < n\) једнак је \(x=\left\lceil{\frac{n}{k}}\right\rceil - 1\).

Докажимо формално прво тврђење. По дефиницији важи да је \(\left\lfloor{a}\right\rfloor = b\) акко је \(b \leq a < b + 1\). Докажимо да је \(\left\lfloor{\frac{n}{k}}\right\rfloor\) највећи број цео такав да помножен бројем \(k\) даје вредност мању или једнаку од \(n\). Ако је \(x = \left\lfloor{\frac{n}{k}}\right\rfloor\), тада важи да је \(x \leq \frac{n}{k} < x+1\). Зато је \(x\cdot k \leq n < (x+1)\cdot k\) и \(x = \left\lfloor{\frac{n}{k}}\right\rfloor\) је заиста највећи број такав да је \(x\cdot k \leq n\).

Докажимо формално и друго тврђење. По дефиницији важи да је \(\left\lceil{a}\right\rceil = b\) акко је \(b-1 < a \leq b\). Зато, ако је \(x = \left\lceil{\frac{n}{k}}\right\rceil\) тада је \(x - 1 < \frac{n}{k} \leq x\). Зато је \((x-1)\cdot k < n \leq x\cdot k\), па је \(x = \left\lceil{\frac{n}{k}}\right\rceil\) заиста најмањи цео број такав да важи \(x\cdot k \geq n\).

И остала тврђења се доказују на сличан начин.

Касније ћемо показати да ако су \(n\) и \(k\) природни бројеви, тада се заокруживање њиховог количника може урадити и само помоћу целобројне аритметике (види задатке Поклони и Лифт).

Заокруживање реалних бројева

Три најчешће коришћена начина заокруживања реалног броја \(x\) су:

  • \(\left\lfloor{x}\right\rfloor\) – заокруживање наниже, тј. на највећи цео број који је мањи или једнак од \(x\). У језику C# ово заокруживање врши се функцијом Math.Floor.

  • \(\left\lceil{x}\right\rceil\) – заокруживање навише, тј. на најмањи цео број који је већи или једнак од \(x\). У језику C# ово заокруживање врши се функцијом Math.Ceiling.

  • заокруживање на цео број који је најближи броју \(x\). У језику C# ово заокруживање врши се функцијом Math.Round. У случају када је реални број тачно између два цела броја (нпр. 3.5), различити програмски језици користе различита правила о заокруживању. У језику C# подразумевано је правило да се број заокружује на најближи паран број. Ако се наведе додатни параметар MidpointRounding.AwayFromZero, тада се заокруживање врши навише у случају позитивних тј. наниже у случају негативних бројева који су тачно између два цела броја.

Важе и следећа тврђења.

  • Најмањи цео број строго већи од броја \(x\) једнак \(\left\lfloor{x}\right\rfloor + 1\).

  • Највећи цео број строго мањи од броја \(x\) једнак \(\left\lceil{x}\right\rceil - 1\).

Докажимо прво тврђење и формално. Ако је \(y = \left\lfloor{x}\right\rfloor\), тада је \(y \leq x < y + 1\). Зато је \(y + 1 = \left\lfloor{x}\right\rfloor + 1\) најмањи цео број који је строго већи од \(x\) (\(y\), који је први број мањи од њега, није такав). Друго тврђење се доказује веома слично.

Заокруживање користимо да бисмо нашли целобројна решења неких неједначина. Ако су \(n\) и \(k\) позитивни бројеви, тада важе следећа тврђења.

  • Највећи цео број \(x\) такав да је \(x\cdot k \leq n\) једнак је \(x=\left\lfloor{\frac{n}{k}}\right\rfloor\).

  • Најмањи цео број \(x\) такав да је \(x\cdot k \geq n\) једнак је \(x=\left\lceil{\frac{n}{k}}\right\rceil\).

  • Најмањи цео број \(x\) такав да је \(x\cdot k > n\) једнак је \(x=\left\lfloor{\frac{n}{k}}\right\rfloor + 1\)

  • Највећи цео број \(x\) такав да је \(x\cdot k < n\) једнак је \(x=\left\lceil{\frac{n}{k}}\right\rceil - 1\).

Докажимо формално прво тврђење. По дефиницији важи да је \(\left\lfloor{a}\right\rfloor = b\) акко је \(b \leq a < b + 1\). Докажимо да је \(\left\lfloor{\frac{n}{k}}\right\rfloor\) највећи број цео такав да помножен бројем \(k\) даје вредност мању или једнаку од \(n\). Ако је \(x = \left\lfloor{\frac{n}{k}}\right\rfloor\), тада важи да је \(x \leq \frac{n}{k} < x+1\). Зато је \(x\cdot k \leq n < (x+1)\cdot k\) и \(x = \left\lfloor{\frac{n}{k}}\right\rfloor\) је заиста највећи број такав да је \(x\cdot k \leq n\).

Докажимо формално и друго тврђење. По дефиницији важи да је \(\left\lceil{a}\right\rceil = b\) акко је \(b-1 < a \leq b\). Зато, ако је \(x = \left\lceil{\frac{n}{k}}\right\rceil\) тада је \(x - 1 < \frac{n}{k} \leq x\). Зато је \((x-1)\cdot k < n \leq x\cdot k\), па је \(x = \left\lceil{\frac{n}{k}}\right\rceil\) заиста најмањи цео број такав да важи \(x\cdot k \geq n\).

И остала тврђења се доказују на сличан начин.

Касније ћемо показати да ако су \(n\) и \(k\) природни бројеви, тада се заокруживање њиховог количника може урадити и само помоћу целобројне аритметике (види задатке Поклони и Лифт).