Zaokrúhľovanie

Slovo "zaokrúhľovanie" pre číselnú hodnotu znamená jej nahradenie inou hodnotou, ktorá je približne rovnaká, ale má kratší, jednoduchší alebo jednoznačnejší tvar. Napríklad 23,74 USD by sa dalo zaokrúhliť na 24 USD, alebo zlomok 312/937 by sa dal zaokrúhliť na 1/3, alebo výraz 2 {\displaystyle {\sqrt {2}}{\displaystyle {\sqrt {2}}} ako 1,41.

Zaokrúhľovanie sa často vykonáva zámerne, aby sa získala hodnota, ktorá sa ľahšie zapisuje a spracúva ako pôvodná hodnota. Zaokrúhľovanie sa môže vykonávať aj na označenie presnosti vypočítaného čísla; napríklad množstvo, ktoré bolo vypočítané ako 123 456, ale o ktorom sa vie, že je presné len s presnosťou niekoľkých stoviek jednotiek, je lepšie uviesť ako "približne 123 500".

Na druhej strane zaokrúhľovanie môže do výsledku vniesť určitú zaokrúhľovaciu chybu. Zaokrúhľovaniu sa takmer nedá vyhnúť pri mnohých výpočtoch, najmä pri delení dvoch čísel v celočíselnej aritmetike alebo aritmetike s pevnou desatinnou čiarkou, pri výpočte matematických funkcií, ako sú odmocniny, logaritmy a sínusy, alebo pri použití reprezentácie s pohyblivoudesatinnou čiarkou s pevným počtom významných číslic. V postupnosti výpočtov sa tieto zaokrúhľovacie chyby spravidla hromadia a v určitých "zle nastavených" prípadoch potom môžu spôsobiť, že výsledok stratí zmysel.

Presné zaokrúhľovanie transcendentných matematických funkcií je náročné, pretože počet dodatočných číslic, ktoré je potrebné vypočítať na rozhodnutie, či sa má zaokrúhľovať nahor alebo nadol, nemožno vopred poznať. Tento problém je známy ako "dilema tvorcu tabuliek" (nižšie).

Zaokrúhľovanie má mnoho podobností s kvantovaním, ktoré sa vyskytuje, keď sa fyzikálne veličiny musia kódovať číslami alebo digitálnymi signálmi.

Typy zaokrúhľovania

Typické problémy so zaokrúhľovaním sú:

  • aproximácia iracionálneho čísla zlomkom, napr. π číslom 22/7;
  • aproximácia zlomku s periodickým desatinným rozkladom pomocou konečného desatinného zlomku, napr. 5/3 pomocou 1,6667;
  • nahradenie racionálneho čísla zlomkom s menším čitateľom a menovateľom, napr. 3122/9417 1/3;
  • nahradenie zlomkového desatinného čísla číslom s menším počtom číslic, napr. 2,1784 dolára číslom 2,18 dolára;
  • nahradenie celého desatinného čísla celým číslom s viacerými koncovými nulami, napr. 23 217 ľudí za 23 200 ľudí; alebo všeobecne,
  • nahradenie hodnoty násobkom zadanej hodnoty, napr. 27,2 sekundy 30 sekundami (násobok 15).

Zaokrúhľovanie na zadaný prírastok

Najbežnejším typom zaokrúhľovania je zaokrúhľovanie na celé číslo alebo, všeobecnejšie, na celočíselný násobok nejakého prírastku - napríklad zaokrúhľovanie na celé desatiny sekundy, stotiny dolára, na celé násobky 1/2 alebo 1/8 palca, na celé desiatky alebo tisícky atď.

Vo všeobecnosti zaokrúhľovanie čísla x na násobok určitého prírastku m zahŕňa nasledujúce kroky:

  1. Vydelíme x číslom m a výsledok je y;
  2. Zaokrúhlite y na celočíselnú hodnotu a nazvite ju q;
  3. Vynásobením q číslom m získate zaokrúhlenú hodnotu z.

z = r o u n d ( x , m ) = r o u n d ( x / m ) m {\displaystyle z=\mathrm {round} (x,m)=\mathrm {round} (x/m)\cdot m\,} {\displaystyle z=\mathrm {round} (x,m)=\mathrm {round} (x/m)\cdot m\,}

Napríklad zaokrúhlenie x = 2,1784 dolára na celé centy (t. j. na násobok 0,01) znamená výpočet y = x/m = 2,1784/0,01 = 217,84, potom zaokrúhlenie y na celé číslo q = 218 a nakoniec výpočet z = q×m = 218×0,01 = 2,18.

Pri zaokrúhľovaní na vopred určený počet významných číslic závisí prírastok m od veľkosti zaokrúhľovaného čísla (alebo zaokrúhľovaného výsledku).

Prírastok m je zvyčajne konečný zlomok v akejkoľvek číselnej sústave, ktorá sa používa na reprezentáciu čísel. Pre zobrazenie ľuďom to zvyčajne znamená desiatkovú číselnú sústavu (to znamená, že m je celé číslo vynásobené mocninou 10, napríklad 1/1000 alebo 25/100). Pre medziprodukty uložené v digitálnych počítačoch to často znamená binárnu číselnú sústavu (m je celé číslo krát mocnina 2).

Abstraktná jednoargumentová funkcia "round()", ktorá vracia celé číslo z ľubovoľnej reálnej hodnoty, má najmenej tucet rôznych konkrétnych definícií uvedených v časti zaokrúhľovanie na celé číslo. Abstraktná dvojargumentová funkcia "round()" je tu formálne definovaná, ale v mnohých prípadoch sa používa s implicitnou hodnotou m = 1 pre prírastok a potom sa redukuje na ekvivalentnú abstraktnú jednoargumentovú funkciu, ktorá má tiež rovnaký tucet rôznych konkrétnych definícií.

Zaokrúhľovanie na celé číslo

Najzákladnejšou formou zaokrúhľovania je nahradenie ľubovoľného čísla celým číslom. Všetky nasledujúce spôsoby zaokrúhľovania sú konkrétnymi implementáciami abstraktnej jednoargumentovej funkcie "round()", ktorá bola predstavená a použitá v predchádzajúcich častiach.

Existuje mnoho spôsobov zaokrúhľovania čísla y na celé číslo q. Najbežnejšie z nich sú

  • zaokrúhľujte nadol (alebo berte dno, alebo zaokrúhľujte smerom k mínus nekonečnu): q je najväčšie celé číslo, ktoré nie je väčšie ako y.

q = f l o o r ( y ) = y = - - y {\displaystyle q=\mathrm {floor} (y)=\left\lfloor y\right\rfloor =-\left\lceil -y\right\rceil \,} {\displaystyle q=\mathrm {floor} (y)=\left\lfloor y\right\rfloor =-\left\lceil -y\right\rceil \,}

  • zaokrúhľujte nahor (alebo berte strop, alebo zaokrúhľujte smerom k nekonečnu): q je najmenšie celé číslo, ktoré nie je menšie ako y.

q = c e i l ( y ) = y = - - y {\displaystyle q=\mathrm {ceil} (y)=\left\lceil y\right\rceil =-\left\lfloor -y\right\rfloor \,} {\displaystyle q=\mathrm {ceil} (y)=\left\lceil y\right\rceil =-\left\lfloor -y\right\rfloor \,}

  • zaokrúhliť smerom k nule (alebo skrátiť, alebo zaokrúhliť smerom od nekonečna): q je celočíselná časť y bez číslic zlomku.

q = t r u n k a ( y ) = sgn ( y ) | y | = - sgn ( y ) - | y | {\displaystyle q=\mathrm {truncate} (y)=\operačný názov {sgn}(y)\left\lfloor \left|y\right|\right\rfloor =-\operačný názov {sgn}(y)\left\lceil -\left|y\right|\right\rceil \,} {\displaystyle q=\mathrm {truncate} (y)=\operatorname {sgn}(y)\left\lfloor \left|y\right|\right\rfloor =-\operatorname {sgn}(y)\left\lceil -\left|y\right|\right\rceil \,}

  • zaokrúhľujte smerom od nuly (alebo smerom k nekonečnu): ak y je celé číslo, q je y; inak q je celé číslo, ktoré je najbližšie k 0 a je také, že y je medzi 0 a q.

q = sgn ( y ) | y | = - sgn ( y ) - | y | {\displaystyle q=\operatorname {sgn}(y)\left\lceil \left|y\right|\right\rceil =-\operatorname {sgn}(y)\left\lfloor -\left|y\right|\right\rfloor \,} {\displaystyle q=\operatorname {sgn}(y)\left\lceil \left|y\right|\right\rceil =-\operatorname {sgn}(y)\left\lfloor -\left|y\right|\right\rfloor \,}

  • zaokrúhľujte na najbližšie: q je celé číslo, ktoré je najbližšie k y (pravidlá pre rovnosť sú uvedené nižšie).

Prvé štyri metódy sa nazývajú smerované zaokrúhľovanie, pretože všetky posuny od pôvodného čísla y k zaokrúhľovanej hodnote q smerujú k rovnakej hraničnej hodnote (0, +∞ alebo -∞) alebo od nej.

Ak je y kladné, zaokrúhľovanie nadol je rovnaké ako zaokrúhľovanie smerom k nule a zaokrúhľovanie nahor je rovnaké ako zaokrúhľovanie smerom od nuly. Ak je y záporné, zaokrúhľovanie nadol je rovnaké ako zaokrúhľovanie od nuly a zaokrúhľovanie nahor je rovnaké ako zaokrúhľovanie smerom k nule. V každom prípade, ak je y celé číslo, q je práve y. Nasledujúca tabuľka ilustruje tieto metódy zaokrúhľovania:

y

zaokrúhľovanie
(smerom k -∞)

zaokrúhľovanie
(smerom k +∞)

zaokrúhlenie na nulu

zaokrúhlenie od
nuly

Najbližšie

+23.67

+23

+24

+23

+24

+24

+23.50

+23

+24

+23

+24

+23 alebo +24

+23.35

+23

+24

+23

+24

+23

+23.00

+23

+23

+23

+23

+23

0

0

0

0

0

0

−23.00

−23

−23

−23

−23

−23

−23.35

−24

−23

−23

−24

−23

−23.50

−24

−23

−23

−24

-23 alebo -24

−23.67

−24

−23

−23

−24

−24

Ak sa vykonáva veľa výpočtov za sebou, výber metódy zaokrúhľovania môže mať veľmi významný vplyv na výsledok. Známy príklad sa týkal nového indexu, ktorý vytvorila burza cenných papierov vo Vancouveri v roku 1982. Na začiatku bol stanovený na 1 000 000 a po 22 mesiacoch klesol na približne 520 - zatiaľ čo ceny akcií v tomto období vo všeobecnosti rástli. Problém bol spôsobený tým, že index sa denne prepočítaval tisíckrát a vždy sa zaokrúhľoval na 3 desatinné miesta nadol, čím sa chyby zaokrúhľovania hromadili. Pri prepočte s lepším zaokrúhľovaním bola hodnota indexu na konci toho istého obdobia 1098,892.

Zlomová remíza

Zaokrúhľovanie čísla y na najbližšie celé číslo si vyžaduje určité pravidlo pre prípady, keď je y presne na polceste medzi dvoma celými číslami - teda keď je zlomková časť y presne 0,5.

Zaokrúhlite polovicu nahor

V mnohých disciplínach sa bežne používa nasledujúce pravidlo pre rovnosť, ktoré sa nazýva zaokrúhľovanie na polovicu nahor (alebo zaokrúhľovanie na polovicu smerom k nekonečnu). To znamená, že polovičné hodnoty y sa vždy zaokrúhľujú nahor.

  • Ak je podiel y presne 0,5, potom q = y + 0,5.

q = y + 0,5 = - - y - 0,5 {\displaystyle q=\left\lfloor y+0,5\right\rfloor =-\left\lceil -y-0,5\right\rceil \,} {\displaystyle q=\left\lfloor y+0.5\right\rfloor =-\left\lceil -y-0.5\right\rceil \,}

Podľa tohto pravidla sa napríklad hodnota 23,5 zaokrúhli na 24, ale -23,5 sa zaokrúhli na -23.

Toto je jedno z dvoch pravidiel, ktoré sa zvyčajne vyučujú na hodinách matematiky v USA. []

Keby nebolo zlomkov 0,5, chyby zaokrúhľovania spôsobené metódou zaokrúhľovania na najbližšie číslo by boli celkom symetrické: pre každý zlomok, ktorý sa zaokrúhli nahor (napríklad 0,268), existuje doplnkový zlomok (konkrétne 0,732), ktorý sa zaokrúhli nadol o rovnakú hodnotu. Pri zaokrúhľovaní veľkého súboru čísel s náhodnými zlomkami by sa tieto chyby zaokrúhľovania navzájom štatisticky kompenzovali a očakávaná (priemerná) hodnota zaokrúhlených čísel by sa rovnala očakávanej hodnote pôvodných čísel.

Pravidlo zaokrúhľovania polovice nahor však nie je symetrické, pretože zlomky, ktoré sú presne 0,5, sa vždy zaokrúhľujú nahor. Táto asymetria vnáša do chýb zaokrúhľovania pozitívne skreslenie. Ak napríklad zlomok y pozostáva z troch náhodných desatinných číslic, potom očakávaná hodnota q bude o 0,0005 vyššia ako očakávaná hodnota y. Z tohto dôvodu sa zaokrúhľovanie na najbližšie s pravidlom zaokrúhľovania na polovicu nahor nazýva aj (nejednoznačne) asymetrické zaokrúhľovanie.

Jedným z dôvodov zaokrúhľovania na 0,5 je, že stačí preskúmať len jednu číslicu. Keď vidíme napríklad 17,50000..., prvé tri číslice, 17,5, určujú, že číslo bude zaokrúhlené na 18. Ak by sa použilo opačné pravidlo (zaokrúhľovanie o polovicu nadol), potom by sa museli preskúmať všetky nuly na desatinnom mieste, aby sa určilo, či je hodnota presne 17,5.

Zaoblenie polovice dole

Možno tiež použiť zaokrúhlenie o polovicu nadol (alebo zaokrúhlenie o polovicu smerom k mínus nekonečnu) na rozdiel od bežnejšieho zaokrúhlenia o polovicu nahor (metóda zaokrúhlenia o polovicu nahor je bežnou konvenciou, ale nie je ničím iným ako konvenciou).

  • Ak je podiel y presne 0,5, potom q = y - 0,5.

q = y - 0,5 = - - y + 0,5 {\displaystyle q=\left\lceil y-0,5\right\rceil =-\left\lfloor -y+0,5\right\rfloor \,} {\displaystyle q=\left\lceil y-0.5\right\rceil =-\left\lfloor -y+0.5\right\rfloor \,}

Napríklad 23,5 sa zaokrúhli na 23 a -23,5 sa zaokrúhli na -24.

Pravidlo zaokrúhľovania na polovicu nadol nie je symetrické, pretože zlomky, ktoré sú presne 0,5, sa vždy zaokrúhľujú nadol. Táto asymetria vnáša do chýb zaokrúhľovania záporné skreslenie. Ak napríklad zlomok y pozostáva z troch náhodných desatinných číslic, potom očakávaná hodnota q bude o 0,0005 nižšia ako očakávaná hodnota y. Z tohto dôvodu sa zaokrúhľovanie na najbližšie čísla s pravidlom zaokrúhľovania na polovicu nadol nazýva aj (nejednoznačne) asymetrické zaokrúhľovanie.

Zaokrúhlenie na polovicu od nuly

Ďalšou bežne vyučovanou a používanou metódou je zaokrúhľovanie polovice od nuly (alebo zaokrúhľovanie polovice smerom k nekonečnu), a to:

  • Ak je podiel y presne 0,5, potom q = y + 0,5, ak je y kladné, a q = y - 0,5, ak je y záporné.

q = sgn ( y ) | y | + 0,5 = - sgn ( y ) - | y | - 0,5 {\displaystyle q=\operatorname {sgn}(y)\left\lfloor \left|y\right|+0.5\pravý\rfloor =-\názov operátora {sgn}(y)\levý\lceil -\levý|y\pravý|-0,5\pravý\rceil \,} {\displaystyle q=\operatorname {sgn}(y)\left\lfloor \left|y\right|+0.5\right\rfloor =-\operatorname {sgn}(y)\left\lceil -\left|y\right|-0.5\right\rceil \,}

Napríklad 23,5 sa zaokrúhli na 24 a -23,5 sa zaokrúhli na -24.

Pri tejto metóde sa s kladnými a zápornými hodnotami zaobchádza symetricky, a preto je bez celkového skreslenia, ak sú pôvodné čísla kladné alebo záporné s rovnakou pravdepodobnosťou. Toto pravidlo však stále zavádza kladné skreslenie pre kladné čísla a záporné skreslenie pre záporné čísla.

Často sa používa pri prepočtoch mien a zaokrúhľovaní cien (keď sa suma najprv prepočíta na najmenší významný diel meny, napríklad centy eura), pretože sa dá ľahko vysvetliť len zohľadnením prvej zlomkovej číslice, nezávisle od dodatočných presných číslic alebo znamienka sumy (pre striktnú ekvivalenciu medzi platiteľom a príjemcom sumy).

Zaokrúhlite polovicu smerom k nule

Možno tiež zaokrúhľovať polovicu smerom k nule (alebo polovicu smerom od nekonečna) na rozdiel od bežnejšieho zaokrúhľovania polovice smerom od nuly (metóda zaokrúhľovania polovice smerom od nuly je bežnou konvenciou, ale nie je ničím iným ako konvenciou).

  • Ak je podiel y presne 0,5, potom q = y - 0,5, ak je y kladné, a q = y + 0,5, ak je y záporné.

q = sgn ( y ) | y | - 0,5 = - sgn ( y ) - | y | + 0,5 {\displaystyle q=\operatorname {sgn}(y)\left\lceil \left|y\right|-0.5\pravý\rceil =-\názov operátora {sgn}(y)\levý\lfloor -\levý|y\pravý|+0,5\pravý\rfloor \,} {\displaystyle q=\operatorname {sgn}(y)\left\lceil \left|y\right|-0.5\right\rceil =-\operatorname {sgn}(y)\left\lfloor -\left|y\right|+0.5\right\rfloor \,}

Napríklad 23,5 sa zaokrúhli na 23 a -23,5 sa zaokrúhli na -23.

Táto metóda tiež zaobchádza s kladnými a zápornými hodnotami symetricky, a preto je bez celkového skreslenia, ak sú pôvodné čísla kladné alebo záporné s rovnakou pravdepodobnosťou. Toto pravidlo však stále zavádza záporné skreslenie pre kladné čísla a kladné skreslenie pre záporné čísla.

Zaokrúhlite polovicu na párnu

Ešte menej neobjektívnym pravidlom je pravidlo zaokrúhľovania polovice na rovnosť, a to

  • Ak je zlomok y rovný 0,5, potom q je párne celé číslo najbližšie k y.

Tak sa napríklad z +23,5 stane +24, z +22,5 sa stane +22, z -22,5 sa stane -22 a z -23,5 sa stane -24.

Táto metóda tiež zaobchádza s kladnými a zápornými hodnotami symetricky, a preto je bez celkového skreslenia, ak sú pôvodné čísla kladné alebo záporné s rovnakou pravdepodobnosťou. Okrem toho pre väčšinu rozumných rozdelení hodnôt y je očakávaná (priemerná) hodnota zaokrúhlených čísel v podstate rovnaká ako hodnota pôvodných čísel, aj keď sú všetky kladné (alebo všetky záporné). Toto pravidlo však stále zavádza kladnú odchýlku pre párne čísla (vrátane nuly) a zápornú odchýlku pre nepárne čísla.

Tento variant metódy zaokrúhľovania na najbližšie číslo sa nazýva aj nestranné zaokrúhľovanie (nejednoznačne a trochu zneužiteľne), konvergentné zaokrúhľovanie, štatistické zaokrúhľovanie, holandské zaokrúhľovanie, Gaussovo zaokrúhľovanie alebo bankové zaokrúhľovanie. Toto zaokrúhľovanie sa bežne používa v účtovníctve.

Toto je predvolený spôsob zaokrúhľovania používaný vo výpočtových funkciách a operátoroch IEEE 754.

Zaokrúhlite polovicu na nepárnu

Ďalšie pravidlo pre nerozhodný výsledok, ktoré je veľmi podobné pravidlu zaokrúhľovania polovice na párnu hodnotu, a to

  • Ak je zlomok y 0,5, potom q je nepárne celé číslo najbližšie k y.

Tak sa napríklad z +22,5 stane +23, z +21,5 sa stane +21, z -21,5 sa stane -21 a z -22,5 sa stane -23.

Táto metóda tiež zaobchádza s kladnými a zápornými hodnotami symetricky, a preto je bez celkového skreslenia, ak sú pôvodné čísla kladné alebo záporné s rovnakou pravdepodobnosťou. Okrem toho pre väčšinu rozumných rozdelení hodnôt y je očakávaná (priemerná) hodnota zaokrúhlených čísel v podstate rovnaká ako hodnota pôvodných čísel, aj keď sú všetky kladné (alebo všetky záporné). Toto pravidlo však stále zavádza zápornú odchýlku pre párne čísla (vrátane nuly) a kladnú odchýlku pre nepárne čísla.

Tento variant sa vo väčšine výpočtov takmer nikdy nepoužíva, s výnimkou situácií, keď sa chceme vyhnúť zaokrúhľovaniu 0,5 alebo -0,5 na nulu, alebo keď sa chceme vyhnúť zväčšovaniu mierky čísel reprezentovaných ako čísla s pohyblivou rádovou čiarkou (s obmedzenými rozsahmi pre škálovací exponent), takže nekonečné číslo by sa zaokrúhlilo na nekonečno, alebo že by sa malá denormálna hodnota zaokrúhlila na normálnu nenulovú hodnotu (tieto prípady by mohli nastať pri režime zaokrúhľovania polovice na párne). V skutočnosti tento režim uprednostňuje zachovanie existujúcej stupnice nerozhodných čísel a vyhýba sa výsledkom mimo rozsahu, ak je to možné.

Stochastické zaokrúhľovanie

Ďalšou nestrannou metódou na vyrovnanie je stochastické zaokrúhľovanie:

  • Ak je zlomok y rovný 0,5, vyberte q náhodne spomedzi y + 0,5 a y - 0,5 s rovnakou pravdepodobnosťou.

Podobne ako pri zaokrúhľovaní na polovicu k párnym je toto pravidlo v podstate bez celkového skreslenia, ale je spravodlivé aj medzi párnymi a nepárnymi hodnotami q. Na druhej strane vnáša do výsledku náhodnú zložku; vykonanie toho istého výpočtu dvakrát na tých istých údajoch môže priniesť dva rôzne výsledky. Takisto je otvorená nevedomej zaujatosti, ak ľudia (a nie počítače alebo náhodné zariadenia) "náhodne" rozhodujú, ktorým smerom zaokrúhľovať.

Striedavé rozhodovanie o remíze

Jednou z metód, ktorá je nejasnejšia ako väčšina ostatných, je striedanie okrúhlych polovíc.

  • Ak je zlomok 0,5, zaokrúhľujte striedavo nahor a nadol: pri prvom výskyte zlomku 0,5 zaokrúhľujte nahor, pri druhom výskyte nadol a tak ďalej.

Tým sa potlačí náhodná zložka výsledku, ak sa dajú efektívne očíslovať výskyty 0,5 zlomku. Ak je však celkový počet výskytov nepárny, môže to stále vnášať pozitívne alebo negatívne skreslenie podľa smeru zaokrúhľovania priradeného prvému výskytu.

Jednoduchý dithering

V niektorých kontextoch môžu byť všetky uvedené metódy zaokrúhľovania nevyhovujúce. Predpokladajme napríklad, že y je presné meranie zvukového signálu, ktoré sa zaokrúhľuje na celé číslo q s cieľom znížiť náklady na ukladanie alebo prenos. Ak sa y mení s časom pomaly, ktorákoľvek z uvedených metód zaokrúhľovania bude mať za následok, že q bude úplne konštantné počas dlhých intervalov, oddelených náhlymi skokmi ±1. Pri prehrávaní signálu q budú tieto kroky počuť ako veľmi nepríjemný šum a akékoľvek zmeny pôvodného signálu medzi dvoma celočíselnými hodnotami sa úplne stratia.

Jedným zo spôsobov, ako sa vyhnúť tomuto problému, je zaokrúhliť každú hodnotu y nahor s pravdepodobnosťou rovnajúcou sa jej podielu a nadol ju zaokrúhliť s doplnkom tejto pravdepodobnosti. Napríklad číslo 23,17 by sa zaokrúhlilo na 24 s pravdepodobnosťou 0,17 a nadol na 23 s pravdepodobnosťou 1 - 0,17 = 0,83. (To je ekvivalentné zaokrúhľovaniu y + s, kde s je náhodné číslo rovnomerne rozdelené medzi 0 a 1.) Pri tomto špeciálnom zaokrúhľovaní, známom ako dithering, sa náhle kroky nahradia menej nepríjemným šumom a aj malé odchýlky v pôvodnom signále sa do určitej miery zachovajú. Podobne ako stochastický prístup k rovnosti, ani dithering nemá tendenciu: ak sú všetky hodnoty zlomkov rovnako pravdepodobné, zaokrúhľovanie nahor o určitú hodnotu je rovnako pravdepodobné ako zaokrúhľovanie nadol o tú istú hodnotu; a to isté platí pre súčet viacerých zaokrúhlených čísel. Na druhej strane dithering vnáša do výsledku náhodnú zložku, ktorá je oveľa väčšia ako pri stochastickom zrovnávaní.

Presnejšie povedané, chyba zaokrúhľovania pre každé ditherované číslo bude rovnomerne rozdelená náhodná premenná so strednou hodnotou nula, ale so štandardnou odchýlkou 1/12 ≈ 0,2886 {\displaystyle 1/{\sqrt {12}}\aprox 0,2886} {\displaystyle 1/{\sqrt {12}}\approx 0.2886}, čo je lepšie ako štandardná odchýlka 1/2 pri jednoduchých predikčných metódach, ale o niečo vyššie ako pri jednoduchšej stochastickej metóde. Súčet n zaokrúhlených čísel však bude náhodná premenná s očakávanou chybou nula, ale so štandardnou odchýlkou n/12 {\displaystyle {\sqrt {n}}/{\sqrt {12}}} {\displaystyle {\sqrt {n}}/{\sqrt {12}}}(celkový zostávajúci šum), ktorá sa polokvadraticky rozchádza a môže sa stať ľahko vnímateľnou, aj keď štandardná odchýlka chyby zaokrúhľovania na vzorku bude 1 / 12 n {\displaystyle 1/{\sqrt {12n}}{\displaystyle 1/{\sqrt {12n}}}, ktorá pomaly polokvadraticky konverguje k nule. Takže toto náhodné rozdelenie môže byť stále príliš vysoké pre niektoré aplikácie, ktoré zaokrúhľujú veľa údajov.

Viacrozmerný dithering

Tento variant jednoduchej metódy ditheringu stále zaokrúhľuje hodnoty s pravdepodobnosťou rovnajúcou sa ich podielu. Namiesto použitia náhodného rozdelenia na zaokrúhľovanie izolovaných vzoriek sa však zaokrúhľovacia chyba vyskytujúca sa pri každej zaokrúhľovanej vzorke sčíta pre ďalšie okolité prvky, ktoré sa majú vzorkovať alebo vypočítať; táto kumulovaná hodnota sa potom pripočíta k hodnote týchto ďalších vzorkovaných alebo vypočítaných hodnôt, ktoré sa majú zaokrúhliť, takže modifikované hodnoty zohľadnia tento rozdiel pomocou prediktívneho modelu (napríklad Floyd-Steinbergovo ditheringové zaokrúhľovanie).

Upravené hodnoty sa potom zaokrúhlia pomocou niektorej z vyššie uvedených metód zaokrúhľovania, pričom najlepšie sú stochastické alebo ditheringové metódy: v tomto poslednom prípade bude súčet n zaokrúhlených čísel stále náhodnou premennou s očakávanou chybou nula, ale s vynikajúcou konštantnou štandardnou odchýlkou 1/12 {\displaystyle 1/{\sqrt {12}} {\displaystyle 1/{\sqrt {12}}}namiesto polokvadratickej divergencie pri ditheringu izolovaných vzoriek; a celková priemerná odchýlka zaokrúhľovacej chyby na zaokrúhlenú vzorku bude 1 / ( n 12 ) {\displaystyle 1/(n{\sqrt {12}})}{\displaystyle 1/(n{\sqrt {12}})}, ktorá bude hyperbolicky konvergovať k nule rýchlejšie ako pri polohyperbolickej konvergencii pri ditheringu izolovaných vzoriek.

V praxi sa pri zaokrúhľovaní veľkých súborov vzorkovaných údajov (napríklad pri vykresľovaní zvuku, obrazu a videa) najčastejšie používa akumulácia chýb zaokrúhľovania s jednoduchým prediktívnym zaokrúhľovaním upravených hodnôt (napríklad zaokrúhľovanie smerom k nule), pretože sa pri ňom stále zachováva hyperbolická konvergencia k nule celkovej strednej odchýlky chyby zaokrúhľovania a jej štandardnej odchýlky. Toto vylepšenie sa často používa pri spracovaní obrazu a zvuku (najmä na presné zmeny mierky a operácie proti vyhladzovaniu, kde jednoduché pravdepodobnostné zaokrúhľovanie izolovaných hodnôt môže stále vytvárať vnímateľný šum, niekedy dokonca horší ako moiré efekt, ktorý sa vyskytuje pri jednoduchých nepravdepodobnostných metódach zaokrúhľovania aplikovaných na izolované vzorky).

Efektívne šírenie nahromadených chýb zaokrúhľovania môže závisieť od diskrétnej dimenzie vzorkovaných údajov, ktoré sa majú zaokrúhľovať: pri vzorkovaní dvojrozmerných obrazov vrátane farebných obrazov (ktoré pridávajú diskrétnu dimenziu farebných rovín) alebo trojrozmerných videí (ktoré pridávajú diskrétnu časovú dimenziu) alebo pri polyfonických zvukových údajoch (s použitím diskrétnych dimenzií času a kanálov) môže byť stále výhodnejšie šíriť túto chybu do preferovaného smeru alebo rovnako do niekoľkých ortogonálnych dimenzií, ako napr. vertikálne vs. horizontálne pre dvojrozmerné obrazy, alebo do paralelných farebných kanálov v rovnakej polohe a/alebo časovej značke a v závislosti od iných vlastností týchto ortogonálnych diskrétnych rozmerov (podľa modelu vnímania). V týchto prípadoch sa môže použiť niekoľko akumulátorov zaokrúhľovacích chýb (aspoň jeden pre každú diskrétnu dimenziu) alebo vektor (n-1)-dimenzionálny vektor (alebo matica) akumulátorov.

V niektorých z týchto prípadov sa diskrétne rozmery údajov na vzorkovanie a zaokrúhľovanie môžu spracovať neortogonálne: Napríklad pri práci s farebnými obrazmi by sa údaje trojrozmerných farebných rovín v každej fyzickej dimenzii (výška, šírka a voliteľne čas) mohli preradiť pomocou percepčného farebného modelu, takže akumulátory chýb zaokrúhľovania budú navrhnuté tak, aby zachovávali svetlosť s vyššou pravdepodobnosťou ako odtieň alebo sýtosť, namiesto toho, aby sa chyby šírili do každej ortogonálnej farebnej roviny samostatne; a v stereofónnych zvukových údajoch sa dva zaokrúhlené dátové kanály (ľavý a pravý) môžu zaokrúhľovať spoločne, aby sa zachovala ich stredná hodnota prednostne pred ich efektívnym rozdielom, ktorý absorbuje väčšinu zostávajúcich zaokrúhľovacích chýb, a to vyváženým spôsobom okolo nuly.

Zaokrúhľovanie na jednoduché zlomky

V niektorých situáciách je žiaduce zaokrúhliť dané číslo x na "čistý" zlomok, t. j. najbližší zlomok z = m/n, ktorého čitateľ m a menovateľ n nepresahujú dané maximum. Tento problém je dosť odlišný od problému zaokrúhľovania hodnoty na pevný počet desatinných alebo dvojkových číslic alebo na násobok danej jednotky m. Tento problém súvisí s Fareyovými postupnosťami, Sternovým-Brocotovým stromom a pokračujúcimi zlomkami.

Zaokrúhľovanie v mierke

Tento typ zaokrúhľovania, ktorý sa nazýva aj zaokrúhľovanie na logaritmickú stupnicu, je variantom zaokrúhľovania na zadaný prírastok, ale s prírastkom, ktorý sa mení v závislosti od rozsahu a veľkosti výsledku. Konkrétne ide o obmedzenie počtu významných číslic, pričom sa hodnota zaokrúhľuje tak, že nevýznamné číslice sa vynechajú. Tento typ zaokrúhľovania sa implicitne vyskytuje pri číslach počítaných s hodnotami s pohyblivou rádovou čiarkou s obmedzenou presnosťou (ako sú typy IEEE-754 float a double), ale môže sa použiť všeobecnejšie na zaokrúhľovanie akýchkoľvek reálnych hodnôt s akýmkoľvek kladným počtom významných číslic a akýmkoľvek striktne kladným reálnym základom.

Môže sa napríklad použiť v technickej grafike na reprezentáciu údajov s logaritmickou stupnicou s premenlivými krokmi (napríklad vlnové dĺžky, ktorých základ nemusí byť celočíselná miera) alebo v štatistických údajoch na definovanie tried reálnych hodnôt v rámci intervalov s exponenciálne rastúcou šírkou (najčastejšie sa však používa s celočíselnými základmi, ako je 10 alebo 2). [zdroj? ]

Tento typ zaokrúhľovania je založený na logaritmickej stupnici definovanej pevným nenulovým reálnym škálovacím faktorom s (v najčastejších prípadoch je tento faktor s=1) a pevným kladným základom b>1 (nemusí to byť celé číslo a najčastejšie sa líši od škálovacieho faktora) a pevným celočíselným počtom n>0 významných číslic v tomto základe (ktorý určí hodnotu prírastku, ktorý sa použije na zaokrúhľovanie, spolu s vypočítanou efektívnou stupnicou zaokrúhľovaného čísla).

Číslo primárneho argumentu (ako aj výsledné zaokrúhlené číslo) sa najprv reprezentuje v exponenciálnom zápise x = s-a-m-bc, pričom znamienko s je buď +1 alebo -1, absolútna mantisa a je obmedzená na polootvorený kladný interval [1/b,1) a exponent c je ľubovoľné (kladné alebo záporné) celé číslo. V tejto reprezentácii sú všetky významné číslice v zlomkovej časti absolútnej mantisy, ktorej celočíselná časť je vždy nula.

Ak je zdrojové číslo (alebo zaokrúhlené číslo) 0, absolútna mantisa a je definovaná ako 0, exponent c je pevne stanovený na ľubovoľnú hodnotu (vo väčšine konvencií 0, ale niektoré reprezentácie s pohyblivou rádovou čiarkou nemôžu použiť nulovú absolútnu mantisu, ale vyhradzujú pre exponent c špecifickú maximálnu zápornú hodnotu, ktorá reprezentuje samotné číslo 0), a znamienko s môže byť ľubovoľne zvolené medzi -1 alebo +1 (pre jednoduchú nulu je spravidla nastavené na +1, alebo je nastavené na rovnaké znamienko ako argument v zaokrúhlenej hodnote, ak reprezentácia čísla umožňuje rozlišovať kladné a záporné nuly, aj keď nakoniec reprezentujú rovnakú číselnú hodnotu 0).

Ako ekvivalent možno použiť aj škálovanú exponenciálnu reprezentáciu x = a-s-bc so znamienkovou mantisou a, ktorá sa buď rovná nule, alebo sa nachádza v jednom z dvoch polootvorených intervalov (-1,-1/b] a [+1/b,+1), a to bude prípad nižšie uvedeného algoritmu.

Kroky na výpočet tohto zaokrúhlenia sú vo všeobecnosti podobné nasledujúcim:

  1. ak sa x rovná nule, jednoducho vráťte x; inak:
  2. previesť x na škálovanú exponenciálnu reprezentáciu so znamienkovou mantisou:
    x = a
    s b c {\displaystyle x=a\cdot s\cdot b^{c}\,} {\displaystyle x=a\cdot s\cdot b^{c}\,}
    1. nech x' je nezmenšená hodnota x vydelením faktorom zmenšenia s:
      x ′ = x / s {\displaystyle x'=x/s\,}
      {\displaystyle x'=x/s\,} ;
    2. nech je škálovací exponent c rovný jednej plus základný logaritmus absolútnej hodnoty x', zaokrúhlený na celé číslo (smerom nadol mínus nekonečno):
      c = 1 +
      log b | x ′ | = 1 + log b | x / s | {\displaystyle c=1+\left\lfloor \log _{b}\left|x'\right|\right\rfloor =1+\left\lfloor \log _{b}\left|x/s\right|\right\rfloor \,}{\displaystyle c=1+\left\lfloor \log _{b}\left|x'\right|\right\rfloor =1+\left\lfloor \log _{b}\left|x/s\right|\right\rfloor \,} ;
    3. nech je podpísaná mantisa a súčinom x' deleného b na mocninu c:
      a = x ′
      b - c = x / s b - c {\displaystyle a=x'\cdot b^{-c}=x/s\cdot b^{-c}\,} {\displaystyle a=x'\cdot b^{-c}=x/s\cdot b^{-c}\,}
  3. vypočítať zaokrúhlenú hodnotu v tomto zobrazení:
    1. nech c' je počiatočný škálovací exponent c x':
      c ′ = c {\displaystyle c'=c\,}
      {\displaystyle c'=c\,}
    2. nech m je prírastok pre zaokrúhľovanie mantisy a podľa počtu významných číslic, ktoré sa majú zachovať:
      m = b - n {\displaystyle m=b^{-n}\,}
      {\displaystyle m=b^{-n}\,}
    3. nech a' je znamienková mantisa a zaokrúhlená podľa tohto prírastku m a zvoleného spôsobu zaokrúhľovania:
      a ′ = r o u n d ( a , m ) = r o u n d ( x / s
      b n - c ′ ) b - n {\displaystyle a'=\mathrm {round} (a,m)=\mathrm {round} (x/s\cdot b^{n-c'})\cdot b^{-n},} {\displaystyle a'=\mathrm {round} (a,m)=\mathrm {round} (x/s\cdot b^{n-c'})\cdot b^{-n}\,}
    4. ak absolútna hodnota a' nie je nižšia ako b, potom znížte n (vynásobte prírastok m číslom b), zvýšte škálovací exponent c', vydeľte podpísanú mantisu a číslom b a znovu začnite zaokrúhľovať novú podpísanú mantisu a na a' podľa rovnakého vzorca; tomuto kroku sa možno vyhnúť len vtedy, ak funkcia abtract "round()" vždy zaokrúhľuje a smerom k 0 (t. j.t. j. ak ide o jednoduché skrátenie), ale je potrebný, ak môže zaokrúhľovať a smerom k nekonečnu, pretože zaokrúhlená mantisa môže mať v tomto prípade vyšší škálovací exponent, čím sa ponechá jedna číslica presnosti navyše.
  4. vrátiť zaokrúhlenú hodnotu:
    y = s c a l e d r o u n d ( x , s , b , n ) = a ′
    s b c ′ = r o u n d ( x / s b n - c ′ ) s b c ′ - n {\displaystyle y=\mathrm {scaledround} (x,s,b,n)=a'\cdot s\cdot b^{c'}=\mathrm {round} (x/s\cdot b^{n-c'})\cdot s\cdot b^{c'-n}\,} {\displaystyle y=\mathrm {scaledround} (x,s,b,n)=a'\cdot s\cdot b^{c'}=\mathrm {round} (x/s\cdot b^{n-c'})\cdot s\cdot b^{c'-n}\,}.

V prípade abstraktnej funkcie "round()" môže tento typ zaokrúhľovania používať ktorýkoľvek z režimov zaokrúhľovania na celé čísla, ktoré sú podrobnejšie opísané v nasledujúcej časti, ale najčastejšie sa používa režim zaokrúhľovania na najbližšie číslo (s pravidlami pre rovnosť, ktoré sú tiež podrobnejšie opísané nižšie).

Napríklad:

  • zaokrúhlenie 1,234 so škálovacím faktorom 1 v základe 10 a 3 významnými číslicami (maximálna relatívna presnosť = 1/1000) pri použití ľubovoľného režimu zaokrúhľovania na najbližšiu hodnotu vráti 1,23;
  • podobné zaokrúhlenie 1,236 vráti 1,24;
  • podobné zaokrúhlenie 21,236 vráti 21,2;
  • podobné zaokrúhlenie 321,236 vráti 321;
  • zaokrúhlenie 1,234 s faktorom 1 v základe 10 a 3 významnými číslicami (maximálna relatívna presnosť=1/1000) pri použití režimu zaokrúhľovania nadol vráti 1,23;
  • podobné zaokrúhlenie 1,236 vráti tiež hodnotu 1,23;
  • zaokrúhlenie 3 π / 7 ≈ 6,8571 π 2 - 4 {\displaystyle \scriptstyle 3\pi /7\;\approx \;6.8571\cdot \pi \cdot 2^{-4}}{\displaystyle \scriptstyle 3\pi /7\;\approx \;6.8571\cdot \pi \cdot 2^{-4}} so škálovacím faktorom π {\displaystyle \scriptstyle \pi }{\displaystyle \scriptstyle \pi } v základe 2 a 3 významnými číslicami (maximálna relatívna presnosť = 1/8) pri použití režimu zaokrúhľovania nadol vráti 6 π 2 - 4 = 3 π / 8 {\displaystyle \scriptstyle 6\cdot \pi \cdot 2^{-4};=\;3\pi /8}{\displaystyle \scriptstyle 6\cdot \pi \cdot 2^{-4}\;=\;3\pi /8} ;
  • podobné zaokrúhlenie 5 π / 7 ≈ 5,7143 π 2 - 3 {\displaystyle \scriptstyle 5\pi /7\;\approx \;5.7143\cdot \pi \cdot 2^{-3}}{\displaystyle \scriptstyle 5\pi /7\;\approx \;5.7143\cdot \pi \cdot 2^{-3}} vráti 5 π 2 - 3 = 5 π / 8 {\displaystyle \scriptstyle 5\cdot \pi \cdot 2^{-3}\;=\;5\pi /8}{\displaystyle \scriptstyle 5\cdot \pi \cdot 2^{-3}\;=\;5\pi /8} ;
  • podobné zaokrúhlenie π / 7 ≈ 4,5714 π 2 - 5 {\displaystyle \scriptstyle \pi /7\;\approx \;4.5714\cdot \pi \cdot 2^{-5}}{\displaystyle \scriptstyle \pi /7\;\approx \;4.5714\cdot \pi \cdot 2^{-5}} vráti 4 π 2 - 5 = π / 8 {\displaystyle \scriptstyle 4\cdot \pi \cdot 2^{-5}\;=\;\pi /8}{\displaystyle \scriptstyle 4\cdot \pi \cdot 2^{-5}\;=\;\pi /8} .
  • podobné zaokrúhlenie π / 8 = 4 π 2 - 5 {\displaystyle \scriptstyle \pi /8\;=\;4\cdot \pi \cdot 2^{-5}}{\displaystyle \scriptstyle \pi /8\;=\;4\cdot \pi \cdot 2^{-5}} tiež vráti 4 π 2 - 5 = π / 8 {\displaystyle \scriptstyle 4\cdot \pi \cdot 2^{-5}\;=\;\pi /8}{\displaystyle \scriptstyle 4\cdot \pi \cdot 2^{-5}\;=\;\pi /8} .
  • podobné zaokrúhlenie π / 15 ≈ 4,2667 π 2 - 6 {\displaystyle \scriptstyle \pi /15\;\approx \;4.2667\cdot \pi \cdot 2^{-6}}{\displaystyle \scriptstyle \pi /15\;\approx \;4.2667\cdot \pi \cdot 2^{-6}} vráti 4 π 2 - 6 = π / 16 {\displaystyle \scriptstyle 4\cdot \pi \cdot 2^{-6}\;=\;\pi /16} {\displaystyle \scriptstyle 4\cdot \pi \cdot 2^{-6}\;=\;\pi /16}.

Zaokrúhliť na dostupnú hodnotu

Hotové rezivo, papier na písanie, kondenzátory a mnohé ďalšie výrobky sa zvyčajne predávajú len v niekoľkých štandardných veľkostiach.

Mnohé konštrukčné postupy opisujú, ako vypočítať približnú hodnotu a potom "zaokrúhliť" na určitú štandardnú veľkosť pomocou fráz ako "zaokrúhliť nadol na najbližšiu štandardnú hodnotu", "zaokrúhliť nahor na najbližšiu štandardnú hodnotu" alebo "zaokrúhliť na najbližšiu štandardnú hodnotu".

Ak je súbor preferovaných hodnôt rovnomerne rozmiestnený na logaritmickej stupnici, výber najbližšej preferovanej hodnoty k danej hodnote možno považovať za druh zaokrúhľovania. Takéto "zaokrúhlené" hodnoty možno priamo vypočítať.

Zaokrúhľovanie s pohyblivou desatinnou čiarkou

V aritmetike s pohyblivou rádovou čiarkou je cieľom zaokrúhľovania premeniť danú hodnotu x na hodnotu z s určeným počtom významných číslic. Inými slovami, z by mala byť násobkom čísla m, ktoré závisí od veľkosti z. Číslo m je mocninou základu (zvyčajne 2 alebo 10) tvaru s pohyblivou rádovou čiarkou.

Okrem tohto detailu sa všetky vyššie uvedené varianty zaokrúhľovania vzťahujú aj na zaokrúhľovanie čísel s pohyblivou rádovou čiarkou. Algoritmus takéhoto zaokrúhľovania je uvedený v časti Škálované zaokrúhľovanie, ale s konštantným škálovacím faktorom s=1 a celočíselným základom b>1.

Pre výsledky, pri ktorých by zaokrúhlený výsledok pretečie, je výsledkom pri smerovom zaokrúhľovaní buď príslušné znamienkové nekonečno, alebo najvyššie reprezentovateľné kladné konečné číslo (alebo najnižšie reprezentovateľné záporné konečné číslo, ak je x záporné), v závislosti od smeru zaokrúhľovania. Výsledkom preplnenia v bežnom prípade zaokrúhľovania na párne je vždy príslušné nekonečno.

Okrem toho, ak by zaokrúhlený výsledok bol podhodnotený, t. j. ak by exponent prekročil najnižšiu reprezentovateľnú hodnotu celého čísla, efektívnym výsledkom môže byť buď nula (prípadne so znamienkom, ak reprezentácia dokáže zachovať rozlišovanie znamienok pre nuly), alebo najmenšie reprezentovateľné kladné konečné číslo (alebo najvyššie reprezentovateľné záporné konečné číslo, ak je x záporné), prípadne denormálne kladné alebo záporné číslo (ak mantisa uchováva všetky svoje významné číslice, v takom prípade môže byť najvýznamnejšia číslica uložená ešte na nižšej pozícii tak, že sa najvyššie uložené číslice nastavia na nulu a takto uložená mantisa nevynechá najvýznamnejšiu číslicu, čo je možné pri základe b=2, pretože najvýznamnejšia číslica je v tomto základe vždy 1), v závislosti od smeru zaokrúhľovania. Výsledkom podtečenia pre obvyklý prípad zaokrúhľovania na párne hodnoty je vždy príslušná nula.

Dvojité zaokrúhlenie

Zaokrúhľovanie čísla dvakrát po sebe s rôznou presnosťou, pričom druhá presnosť je hrubšia, nezaručuje rovnaký výsledok ako zaokrúhľovanie raz s konečnou presnosťou, okrem prípadu cieleného zaokrúhľovania. Napríklad zaokrúhlenie 9,46 na jedno desatinné miesto dáva 9,5 a potom 10 pri zaokrúhľovaní na celé číslo pomocou zaokrúhlenia na polovicu na párne číslo, ale pri priamom zaokrúhlení na celé číslo by sa získalo 9.

Niektoré počítačové jazyky a norma IEEE 754-2008 predpisujú, že pri priamych výpočtoch by sa výsledok nemal zaokrúhľovať dvakrát. Tento problém sa vyskytol najmä v jazyku Java, keďže je navrhnutý tak, aby sa dal spustiť na rôznych počítačoch rovnako, a na dosiahnutie tohto cieľa sa museli použiť špeciálne programátorské triky s plávajúcou desatinnou čiarkou x87. Jazyk Java bol zmenený tak, aby umožňoval rôzne výsledky v prípadoch, keď na rozdiele nezáleží, a vyžadoval použitie kvalifikátora "strictfp", keď sa výsledky musia presne zhodovať.

Presný výpočet so zaokrúhlenou aritmetikou

Na vyhodnotenie presnej hodnoty funkcie s diskrétnym oborom a rozsahom je možné použiť zaokrúhlenú aritmetiku. Ak napríklad vieme, že celé číslo n je dokonalý štvorec, môžeme vypočítať jeho druhú odmocninu tak, že prevedieme n na hodnotu x s pohyblivou rádovou čiarkou, vypočítame približnú druhú odmocninu y z x s pohyblivou rádovou čiarkou a potom zaokrúhlime y na najbližšie celé číslo q. Ak n nie je príliš veľké, zaokrúhľovacia chyba y s pohyblivou rádovou čiarkou bude menšia ako 0,5, takže zaokrúhlená hodnota q bude presnou druhou odmocninou z n. Na väčšine moderných počítačov môže byť táto metóda oveľa rýchlejšia ako výpočet druhej odmocniny z n pomocou celočíselného algoritmu.

Dilema výrobcu stolov

William Kahan zaviedol termín "Dilema tvorcu tabuliek" pre neznáme náklady na zaokrúhľovanie transcendentných funkcií:

"Nikto nevie, koľko by stál výpočet y^w správne zaokrúhlený na každé dva argumenty s pohyblivou desatinnou čiarkou, pri ktorých nedôjde k jeho pretečeniu/podtečeniu. Namiesto toho renomované matematické knižnice počítajú elementárne transcendentálne funkcie väčšinou s presnosťou o niečo viac ako pol ulp a takmer vždy s presnosťou na jeden ulp. Prečo sa Y^W nemôže zaokrúhľovať v rámci polovice ulp ako SQRT? Pretože nikto nevie, koľko výpočtov by to stálo... Neexistuje žiadny všeobecný spôsob, ako predpovedať, koľko číslic navyše bude treba preniesť na výpočet transcendentálneho výrazu a správne ho zaokrúhliť na nejaký vopred určený počet číslic. Dokonca aj fakt (ak je pravdivý), že konečný počet dodatočných číslic bude nakoniec stačiť, môže byť hlbokým tvrdením."

Štandard IEEE s pohyblivou rádovou čiarkou zaručuje, že sčítanie, odčítanie, násobenie, delenie, odmocňovanie a zvyšok s pohyblivou rádovou čiarkou dajú správne zaokrúhlený výsledok operácie s nekonečnou presnosťou. Takáto záruka však nie je poskytnutá pre zložitejšie funkcie a tie sú zvyčajne presné v najlepšom prípade len s presnosťou na posledný bit.

Pomocou Gelfondovej-Schneiderovej vety a Lindemannovej-Weierstrassovej vety možno dokázať, že mnohé štandardné elementárne funkcie vracajú transcendentné výsledky, ak sú zadané racionálne nenulové argumenty; preto je vždy možné takéto funkcie správne zaokrúhliť. Určenie hranice pre danú presnosť, ako presné výsledky je potrebné vypočítať, aby bolo možné zaručiť správne zaokrúhlený výsledok, však môže vyžadovať veľa výpočtového času.

V súčasnosti existuje niekoľko balíkov, ktoré ponúkajú úplnú presnosť. Balík MPFR poskytuje správne zaokrúhlené výsledky s ľubovoľnou presnosťou. IBM napísala balík pre rýchle a presné elementárne funkcie IEEE a v budúcnosti môžu takúto presnosť ponúkať aj štandardné knižnice.

Je možné vymyslieť dobre definované vypočítateľné čísla, ktoré sa nikdy nepodarí správne zaokrúhliť bez ohľadu na to, koľko číslic sa vypočíta. Napríklad, ak je Goldbachova domnienka pravdivá, ale nedokázateľná, potom nie je možné správne zaokrúhliť 0,5 + 10-n, kde n je prvé párne číslo väčšie ako 4, ktoré nie je súčtom dvoch prvočísiel, alebo 0,5, ak takéto číslo neexistuje. To sa však dá aproximovať s ľubovoľnou presnosťou, aj keď je domnienka nedokazateľná.

História

Pojem zaokrúhľovania je veľmi starý, možno dokonca starší ako pojem delenia. Niektoré staroveké hlinené tabuľky nájdené v Mezopotámii obsahujú tabuľky so zaokrúhlenými hodnotami recipročných čísel a odmocnín v základe 60. Zaokrúhlené približné hodnoty čísla π, dĺžky roka a dĺžky mesiaca sú tiež staré.

Metóda Round-to-even slúži ako norma ASTM (E-29) od roku 1940. Pôvod pojmov nestranné zaokrúhľovanie a štatistické zaokrúhľovanie je pomerne zrozumiteľný. V 4. vydaní knihy Pravdepodobnosť a teória chýb z roku 1906 ju Robert Simpson Woodward nazval "pravidlom počítača", čím naznačil, že ju vtedy bežne používali ľudské počítače, ktoré počítali matematické tabuľky. Článok Churchilla Eisenharta z roku 1947 "Effects of Rounding or Grouping Data" (v publikácii Selected Techniques of Statistical Analysis, McGrawHill, 1947, Eisenhart, Hastay a Wallis, editori) naznačoval, že táto prax už bola "dobre zavedená" v analýze údajov.

Pôvod pojmu "bankové zaokrúhľovanie" zostáva nejasnejší. Ak bol tento spôsob zaokrúhľovania niekedy v bankovníctve štandardom, dôkazy sa hľadajú veľmi ťažko. Naopak, z časti 2 správy Európskej komisie The Introduction of the Euro and the Rounding of Currency Sumounts (Zavedenie eura a zaokrúhľovanie menových súm) vyplýva, že v bankovníctve predtým neexistoval žiadny štandardný prístup k zaokrúhľovaniu; a uvádza sa v nej, že "polovičné" sumy by sa mali zaokrúhľovať nahor.

Až do 80. rokov 20. storočia bola metóda zaokrúhľovania používaná v aritmetike počítačov s pohyblivou rádovou čiarkou zvyčajne pevne stanovená hardvérom, nedostatočne zdokumentovaná, nekonzistentná a odlišná pre každú značku a model počítača. Táto situácia sa zmenila po tom, čo väčšina výrobcov počítačov prijala štandard IEEE 754 pre pohyblivú rádovú čiarku. Štandard umožňuje používateľovi vybrať si z niekoľkých režimov zaokrúhľovania a v každom prípade presne špecifikuje, ako sa majú výsledky zaokrúhľovať. Vďaka týmto vlastnostiam sa numerické výpočty stali predvídateľnejšími a nezávislejšími od strojov a umožnili efektívnu a konzistentnú implementáciu intervalovej aritmetiky.

Zaokrúhľovacie funkcie v programovacích jazykoch

Väčšina programovacích jazykov poskytuje funkcie alebo špeciálnu syntax na zaokrúhľovanie zlomkových čísel rôznymi spôsobmi. Najstaršie numerické jazyky, ako napríklad FORTRAN a C, poskytovali len jeden spôsob, zvyčajne skracovanie (smerom k nule). Táto predvolená metóda sa mohla v určitých kontextoch implikovať, napríklad pri priradení zlomkového čísla celočíselnej premennej alebo pri použití zlomkového čísla ako indexu poľa. Ostatné druhy zaokrúhľovania sa museli naprogramovať explicitne; napríklad zaokrúhľovanie kladného čísla na najbližšie celé číslo sa mohlo realizovať pripočítaním 0,5 a skrátením.

V posledných desaťročiach však syntax a/alebo štandardné knižnice väčšiny jazykov bežne poskytujú aspoň štyri základné zaokrúhľovacie funkcie (nahor/strop, nadol/podlaha, k najbližšiemu a k nule). Metóda zaokrúhľovania sa môže líšiť v závislosti od jazyka a verzie a/alebo môže byť voliteľná programátorom. Niektoré jazyky nasledujú štandard IEEE-754 s pohyblivou rádovou čiarkou a definujú tieto funkcie ako funkcie prijímajúce argument float s dvojitou presnosťou a vracajúce výsledok rovnakého typu, ktorý sa potom v prípade potreby môže previesť na celé číslo. Keďže formát IEEE s dvojitou presnosťou má 52 zlomkových bitov, tento prístup môže zabrániť falošnému pretečeniu v jazykoch s 32-bitovými celými číslami. Niektoré jazyky, ako napríklad PHP, poskytujú funkcie, ktoré zaokrúhľujú hodnotu na určený počet desatinných číslic, napr. z 4321,5678 na 4321,57 alebo 4300. Okrem toho mnohé jazyky poskytujú funkciu "printf" alebo podobnú funkciu formátovania reťazca, ktorá umožňuje previesť zlomkové číslo na reťazec zaokrúhlený na používateľom zadaný počet desatinných miest (presnosť). Na druhej strane, skracovanie (zaokrúhľovanie na nulu) je stále predvolenou metódou zaokrúhľovania, ktorú používajú mnohé jazyky, najmä pri delení dvoch celočíselných hodnôt.

Naopak, CSS a SVG nedefinujú žiadnu konkrétnu maximálnu presnosť pre čísla a miery, s ktorými sa v ich objektovom modeli dokumentu a v ich rozhraní jazyka popisu rozhrania zaobchádza ako s reťazcami, ako keby mali nekonečnú presnosť, a nerozlišujú medzi celými číslami a hodnotami s pohyblivou desatinnou čiarkou; implementácie týchto jazykov však zvyčajne konvertujú tieto čísla na IEEE-754 s dvojitou pohyblivou desatinnou čiarkou pred vystavením vypočítaných číslic s obmedzenou presnosťou (najmä v rámci štandardných väzieb na rozhranie Javascript alebo ECMAScript).

Ostatné normy zaokrúhľovania

Niektoré odbory alebo inštitúcie vydali normy alebo smernice pre zaokrúhľovanie.

Pozorovania počasia v USA

V usmernení vydanom v polovici roku 1966 Úrad federálneho koordinátora pre meteorológiu USA stanovil, že údaje o počasí by sa mali zaokrúhľovať na najbližšie zaokrúhlené číslo, pričom sa uplatňuje pravidlo "zaokrúhlenia o polovicu nahor". Napríklad 1,5 zaokrúhlené na celé číslo by malo byť 2 a -1,5 by malo byť -1. Pred týmto dátumom platilo pravidlo "zaokrúhľuj polovicu od nuly".

Záporná nula v meteorológii

Niektorí meteorológovia môžu napísať "-0" na označenie teploty medzi 0,0 a -0,5 stupňa (výlučne), ktorá bola zaokrúhlená na celé číslo. Tento zápis sa používa vtedy, keď sa záporné znamienko považuje za dôležité bez ohľadu na to, aká malá je jeho veľkosť; napríklad pri zaokrúhľovaní teplôt v Celziovej stupnici, kde teplota pod nulou znamená mráz. []

Súvisiace stránky

Otázky a odpovede

Otázka: Čo znamená slovo "zaokrúhľovanie"?


Odpoveď: Zaokrúhľovanie je nahradenie číselnej hodnoty inou hodnotou, ktorá je približne rovnaká, ale má kratší, jednoduchší alebo jednoznačnejší tvar.

Otázka: Čo je príkladom zaokrúhľovania?


Odpoveď: Príkladom zaokrúhľovania je zaokrúhlenie 23,74 USD na 24 USD, zaokrúhlenie zlomku 312/937 na 1/3 a zaokrúhlenie výrazu 2 {\displaystyle {\sqrt {2}} na 1,41.

Otázka: Prečo zaokrúhľujeme čísla?


Odpoveď: Čísla zaokrúhľujeme, aby sme získali hodnotu, ktorá sa ľahšie zapisuje a spracúva ako pôvodná hodnota. Môže sa to robiť aj na označenie presnosti vypočítaného čísla.

Otázka: Aké sú potenciálne problémy pri zaokrúhľovaní?


Odpoveď: Zaokrúhľovanie môže vo výsledku vniesť určitú chybu zaokrúhľovania a v určitých prípadoch môže spôsobiť, že výsledok nebude mať význam v dôsledku chýb, ktoré sa časom nahromadia pri výpočtoch. Okrem toho presné zaokrúhľovanie transcendentných matematických funkcií môže byť ťažké, pretože nie je možné vopred zistiť, koľko číslic navyše je potrebné vypočítať na vyriešenie otázky, či zaokrúhľovať nahor alebo nadol.

Otázka: Ako súvisí zaokrúhľovanie s kvantifikáciou?


Odpoveď: Zaokrúhľovanie má veľa podobností s kvantovaním, ktoré nastáva, keď sa fyzikálne veličiny musia kódovať číslami alebo digitálnymi signálmi.

AlegsaOnline.com - 2020 / 2023 - License CC3