Žodis "apvalinimas" reiškia, kad skaitinė vertė pakeičiama kita verte, kuri yra apytiksliai tokia pati, bet trumpesnė, paprastesnė arba aiškesnė. Pavyzdžiui, 23,74 JAV dolerio galima suapvalinti iki 24 JAV dolerių, frakciją 312/937 galima suapvalinti iki 1/3, o išraišką 2 {\displaystyle {\sqrt {2}}}{\displaystyle {\sqrt {2}}} - iki 1,41.

Apvalinimas dažnai atliekamas tikslingai, kad būtų gauta vertė, kurią lengviau užrašyti ir tvarkyti nei pradinę. Taip pat gali būti apvalinama siekiant nurodyti apskaičiuoto skaičiaus tikslumą; pavyzdžiui, kiekį, kuris buvo apskaičiuotas kaip 123 456, bet kuris, kaip žinoma, yra tikslus tik kelių šimtų vienetų tikslumu, geriau nurodyti kaip "apie 123 500".

Kita vertus, dėl apvalinimo rezultatuose gali atsirasti tam tikra apvalinimo paklaida. Apvalinimas beveik neišvengiamas atliekant daugelį skaičiavimų, ypač dalijant du skaičius sveikuoju skaičiumi arba fiksuoto kablelio aritmetikoje, skaičiuojant matematines funkcijas, pavyzdžiui, kvadratines šaknis, logaritmus ir sinusus, arba naudojant slankiojokablelio atvaizdavimą su fiksuotu reikšminių skaitmenų skaičiumi. Skaičiavimų sekoje šios apvalinimo klaidos paprastai kaupiasi, o tam tikrais "blogos būklės" atvejais jos gali padaryti rezultatą beprasmį.

Tiksliai apvalinti transcendentines matematines funkcijas sudėtinga, nes negalima iš anksto žinoti, kiek papildomų skaitmenų reikia apskaičiuoti, kad būtų galima nuspręsti, ar apvalinti į didesnę, ar į mažesnę pusę. Ši problema vadinama "lentelės sudarytojo dilema" (toliau).

Apvalinimas turi daug panašumų su kvantavimu, kuris vyksta, kai fizikinius dydžius reikia užkoduoti skaičiais arba skaitmeniniais signalais.

Apvalinimo metodai ir taisyklės

Yra keletas apvalinimo būdų. Pasirinktas metodas lemia, kaip elgiamasi su skaičiais, kurie yra tarp dviejų galimų apvalintų verčių.

  • Apvalinimas į artimiausią (round to nearest) – paprasčiausias variantas: skaičius apvalinamas į artimiausią galimą reikšmę. Jei atstumas vienodas (t. y. "pusė"), taikoma papildoma taisyklė (žr. žemiau).
  • Half-up (pusė į viršų) – tiesiog apvalinama į viršų, kai skaitmuo po apvalinimo ribos yra lygus pusei (pvz., 2,345 → 2,35, apvalinant iki dviejų dešimtųjų).
  • Half-down (pusė į apačią) – pusės atvejus apvalina žemyn.
  • Half-to-even (bankininkų apvalinimas) – pusės atveju apvalinamas į tą skaičių, kurio paskutinis skaitmuo yra lyginis (sumažina sistematinį šališkumą dideliuose duomenų rinkiniuose). Tai numatytoji taisyklė IEEE 754 standartinėje slankiojo kablelio aritmetikoje.
  • Truncation (apkarpymas į nulį) – paprasčiausiai nupjaunamas skaitmenų likutis; dažnai vadinama apvalinimu žemyn, kai skaičiai teigiami.
  • Floor (grindys) ir Ceil (lubos) – apvalinimas visada žemyn (floor) arba visada aukštyn (ceil), nepriklausomai nuo likučio.
  • Apvalinimas į šoną nuo nulio arba link nulio – apvalinimas, atsižvelgiant į skaičiaus ženklą.
  • Stochastinis apvalinimas – pusės atveju apvalinami atsitiktinai pagal tam tikrą tikimybių pasiskirstymą; naudojama tam tikrose skaitmeninėse metodikose, kad būtų sumažintas šališkumas ilgos grandinės sandūrose.

Apvalinimas pagal dešimtųjų vietas ir reikšmingus skaitmenis

Taip pat svarbu atskirti dvi dažniausiai naudojamas prieigas:

  • Apvalinimas pagal dešimtines vietas – pavyzdžiui, apvalinti iki n dešimtųjų vietų reiškia, kad paliekame n skaitmenų po kablelio. Formali formulė half-up atveju: round_n(x) = floor(x·10^n + 0.5)/10^n.
  • Apvalinimas pagal reikšmingus skaitmenis – skaičius apvalinamas taip, kad išlaikytų nustatytą reikšmingų skaitmenų (significant figures) skaičių; ypač svarbu matavimuose ir laboratoriniuose duomenyse.

Apvalinimo klaidos: absoliutus ir reliatyvus

Apvalinimo metu įvedama klaida gali būti apibrėžta keliais būdais:

  • Absoliuti paklaida – |x_apvalintas − x_tikras|. Ji matuoja tiesioginį skirtumą tarp apvalintos ir tikros vertės.
  • Relatyvi paklaida – |x_apvalintas − x_tikras| / |x_tikras|. Dažnai naudingesnė, kai palyginamos skirtingo dydžio reikšmės.

Apvalinimo taisyklė paprastai užtikrina viršutinį absoliutos klaidos ribą. Pavyzdžiui, apvalinant iki n dešimtųjų vietų, absoliuti klaida neviršija 0,5·10^{-n} (kai naudojama apvalinimo į artimiausią taisyklė su half-up / half-to-even taisykle). Relatyvi klaida priklauso nuo skaičiaus dydžio ir gali tapti didelė, jei tikroji vertė yra arti nulio.

Apvalinimo kaupimasis ir skaitmeniniai skaičiavimai

Atliekant sekoje skaičiavimus, apvalinimo klaidos gali kauptis. Ypač pavojingos yra situacijos, kai vyksta katastrofinis atšaukimas (angl. catastrophic cancellation) – kai atimami du beveik lygūs skaičiai, ir daug reikšmingų skaitmenų prarandama. Todėl skaitmeninėje aritmetikoje naudojamos keli strategijos klaidoms sumažinti:

  • laikyti papildomas kontrolines skaitmenis (guard digits) vidiniuose skaičiavimuose;
  • naudoti didesnę skaičiavimo preciziką (pvz., dvigubą slankiojo kablelio preciziką ar daugiaplikius skaitmenis);
  • strukturizuoti algoritmus taip, kad būtų išvengta nepalankių atimčių ar palyginimų;
  • naudoti intervalinę aritmetiką arba grįžtamojo klaidos (backward error) analizę, kuri leidžia įvertinti, kiek pradiniai duomenys turėtų keistis, kad gautume apvalintą rezultatą.

Slankiojo kablelio apvalinimas (IEEE 754)

Standartas IEEE 754 apibrėžia keletą apvalinimo režimų, tarp kurių yra:

  • roundTiesToEven (numatytoji) — pusės atveju apvalinama į artimiausią lyginį skaičių;
  • roundTowardZero — apvalinimas į nulį (truncate);
  • roundTowardPositive — visada į pliusą (ceil);
  • roundTowardNegative — visada į minusą (floor);
  • roundTiesToAway — pusės atveju į šalį nuo nulio.

Tai daro apvalinimą deterministiniu ir nuspėjamu, bet vis tiek įveda mažų klaidų, kurios gali kauptis daugiamatėse skaičiavimo grandinėse.

Transcendentinių funkcijų apvalinimas ir "lentelės sudarytojo dilema"

Transcendentinių funkcijų (pvz., eksponentės, logaritmų, sinusų) apvalinimas yra sudėtingesnis, nes sprendimui, ar apvalinti aukštyn ar žemyn, reikia žinoti tikslų slenkstį. Jei funkcija skaičiuojama aproksimacija (pvz., daugiatermiu skirtiniu), gali būti neaišku, ar artimiausios reikšmės riba yra per kairę ar dešinę nuo apskaičiuotos aproksimacijos. Šią problemą kartais vadina lentelės sudarytojo dilema (table-maker's dilemma): reikia pakankamai tiksliai įvertinti funkcijos reikšmę, kad būtų galima saugiai apvalinti į artimiausią reikšmę, o tai reiškia papildomus skaičiavimus arba garantuotą aukštesnę preciziką.

Apvalinimas matavimuose ir kvantavimas

Matavimuose apvalinimas dažnai reiškia informacijos netekimą: prietaisas gali turėti ribotą skiriamosios gebos vienetus, taigi tikėtinos klaidos matuojant yra kvantavimo žingsnio dydžio. Kai fizikiniai dydžiai koduojami skaitmenimis ar perduodami skaitmeniniais signalais, kvantavimo klaidos elgiasi panašiai kaip apvalinimo klaidos—jos gali būti sisteminės arba atsitiktinės, priklausomai nuo naudojamo metodo.

Geros praktikos gairės

  • Aiškiai dokumentuoti, kokia apvalinimo taisyklė naudojama (pvz., half-to-even ar half-up).
  • Apskaičiavimuose palaikyti didesnę vidinę preciziką nei reikalaujama pateikiamam rezultatui.
  • Vengti nereikalingo tarpinių rezultatų apvalinimo — apvalinti tik galutinį rezultatą.
  • Naudoti intervalinę aritmetiką arba klaidų propagacijos analizę, kai reikia garantijų apie rezultatų patikimumą.
  • Matavimams visada nurodyti reikšmingų skaitmenų skaičių arba klaidos intervalą (pvz., 123 500 ± 200), o ne tik apvalintą reikšmę be konteksto.

Apvalinimas yra paprasta, bet techninė ir teoriškai svarbi operacija, kuriai reikėtų skirti dėmesio tiek praktiniuose (ataskaitos, sąskaitos), tiek skaitmeninių skaičiavimų kontekstuose. Tinkamai pasirinktos taisyklės ir apsauga nuo klaidų leidžia išvengti sisteminio šališkumo ir sumažinti klaidų kaupimąsi dideliuose arba sudėtinguose skaičiavimuose.