Zaokrouhlení - Rounding

Grafy výsledku, y , zaokrouhlení x pomocí různých metod. Pro přehlednost jsou grafy zobrazeny vytěsněné z celočíselných hodnot y . V  souboru SVG najeďte myší na metodu, kterou chcete zvýraznit, a v prohlížečích s povoleným SMIL kliknutím ji vyberte nebo zrušte výběr.

Zaokrouhlení prostředky nahrazující číslo s přibližnou hodnotou, která má kratší , jednodušší , nebo jasnější znázornění. Například nahrazení 23,4476 $ 23,45 $, zlomek 312/937 1/3 nebo výraz 2 1,414.

Zaokrouhlování se často provádí za účelem získání hodnoty, kterou je snadnější hlásit a sdělit než originál. Zaokrouhlení může být také důležité, aby se předešlo zavádějícímu přesnému vykazování vypočítaného čísla, měření nebo odhadu ; například množství, které bylo vypočítáno jako 123 456, ale je známo, že je přesné pouze v rámci několika stovek jednotek, je obvykle lépe uvedeno jako „asi 123 500“.

Na druhou stranu zaokrouhlení přesných čísel způsobí určitou chybu zaokrouhlení v oznámeném výsledku. Zaokrouhlování je téměř nevyhnutelné při vykazování mnoha výpočtů-zejména při dělení dvou čísel v celočíselné nebo pevné aritmetice ; při výpočtu matematických funkcí, jako jsou odmocniny , logaritmy a siny ; nebo při použití reprezentace s plovoucí desetinnou čárkou s pevným počtem platných číslic . V sekvenci výpočtů se tyto chyby zaokrouhlování obvykle hromadí a v určitých špatně podmíněných případech mohou způsobit, že výsledek nebude mít smysl.

Přesné zaokrouhlení transcendentálních matematických funkcí je obtížné, protože počet dalších číslic, které je třeba vypočítat, aby se vyřešilo, zda se má zaokrouhlit nahoru nebo dolů, nelze předem určit. Tento problém je známý jako „ dilema výrobce stolů “.

Zaokrouhlování má mnoho podobností s kvantováním , ke kterému dochází, když musí být fyzické veličiny kódovány čísly nebo digitálními signály .

K zaokrouhlení přesných čísel se někdy používá zvlněný znak rovnosti ( : přibližně rovný ), např. 9,98 ≈ 10. Toto označení zavedl Alfred George Greenhill v roce 1892.

Mezi ideální vlastnosti metod zaokrouhlování patří:

  1. Zaokrouhlování by mělo být prováděno funkcí . Tímto způsobem, když je stejný vstup zaokrouhlen v různých instancích, výstup se nezmění.
  2. Výpočty prováděné se zaokrouhlováním by měly být blízké výpočtům provedeným bez zaokrouhlování.
    • V důsledku (1) a (2) by měl být výstup ze zaokrouhlení blízký jeho vstupu, často co nejblíže nějakou metrikou .
  3. Aby byl rozsah považován za zaokrouhlení, bude podmnožinou domény . Klasickým rozsah je celá čísla, Z .
  4. Zaokrouhlení by mělo zachovat symetrie, které již existují mezi doménou a rozsahem. S konečnou přesností (nebo diskrétní doménou) to znamená odstranění zkreslení .
  5. Metoda zaokrouhlování by měla být užitečná v informatice nebo lidské aritmetice, kde se používá konečná přesnost, a rychlost je v úvahu.

Protože však není obvykle možné, aby metoda splňovala všechny ideální charakteristiky, existuje mnoho metod.

Zaokrouhlování je zpravidla idempotentní ; tj. jakmile je číslo zaokrouhleno, jeho opětovné zaokrouhlení nezmění jeho hodnotu. Zaokrouhlovací funkce jsou také monotónní ; tj. zaokrouhlení většího čísla má za následek stejný nebo větší výsledek než zaokrouhlení menšího čísla.

Druhy zaoblení

Mezi typické problémy se zaokrouhlováním patří:

Problém zaokrouhlení Příklad vstupu Výsledek Kritérium zaokrouhlení
Přibližování iracionálního čísla zlomkem π 22/7 1místný jmenovatel
Sbližování racionálního čísla o další zlomek s menším čitatelem a jmenovatelem 399/941 3/7 1místný jmenovatel
Přibližný zlomek, který má periodickou desítkovou expanzi, konečným desetinným zlomkem 5/3 1,6667 4 desetinná místa
Přibližování zlomkového desetinného čísla na jedno s menším počtem číslic 2,1784 2.18 2 desetinná místa
Přibližování desetinného čísla celým číslem s více nulami na konci 23,217 23 200 3 významné postavy
Aproximace velkého desetinného čísla pomocí vědecké notace 300 999 999 3,01 × 10 8 3 významné postavy
Přibližování hodnoty násobkem zadané částky 48.2 45 Násobek 15
Zaokrouhlení každého z konečné sady reálných čísel (většinou zlomků) na celé číslo (někdy druhé nejbližší celé číslo) tak, aby se součet zaokrouhlených čísel rovnal zaokrouhlenému součtu čísel (potřebný např. [1] pro rozdělení křesel , implementováno např. metodou největších zbytků , viz Matematika rozdělení a [2] pro rozdělení celkové DPH faktury na její položky) {3/12, 4/12, 5/12} {0, 0, 1} Součet zaoblených prvků se rovná zaoblenému součtu prvků

Zaokrouhlení na celé číslo

Nejzákladnější formou zaokrouhlování je nahradit libovolné číslo celým číslem. Všechny následující režimy zaokrouhlování jsou konkrétní implementace abstraktní procedury „round ()“ s jedním argumentem. Toto jsou skutečné funkce (s výjimkou těch, které používají náhodnost).

Směrované zaokrouhlení na celé číslo

Tyto čtyři metody se nazývají směrované zaokrouhlení , protože posunutí z původního čísla x na zaokrouhlenou hodnotu y směřuje ke stejné mezní hodnotě (0, +∞ nebo −∞) nebo od ní. Směrované zaokrouhlování se používá v intervalové aritmetice a je často vyžadováno ve finančních výpočtech.

Pokud je x kladné, zaokrouhlení dolů je stejné jako zaokrouhlení k nule a zaokrouhlení nahoru je stejné jako zaokrouhlení od nuly. Pokud je x záporné, zaokrouhlení dolů je stejné jako zaokrouhlení od nuly a zaokrouhlení nahoru je stejné jako zaokrouhlení k nule. V každém případě, pokud x je celé číslo, y je jen x .

Tam, kde se provádí mnoho výpočtů za sebou, může mít volba metody zaokrouhlení velmi významný vliv na výsledek. Slavná instance zahrnovala nový index vytvořený na burze ve Vancouveru v roce 1982. Původně byl stanoven na 1 000 000 (přesnost na tři desetinná místa) a po 22 měsících klesl na přibližně 520 - zatímco ceny akcií se v daném období obecně zvýšily . Problém byl způsoben tím, že se index přepočítává tisíckrát denně a vždy se zaokrouhluje na 3 desetinná místa dolů takovým způsobem, že se hromadí chyby zaokrouhlování. Přepočítání s lepším zaokrouhlováním dalo hodnotu indexu 1098,892 na konci stejného období.

V níže uvedených příkladech sgn ( x ) odkazuje na znakovou funkci použitou na původní číslo x .

Zaokrouhlování dolů

  • zaokrouhlit dolů (nebo vzít slovo nebo zaokrouhlit směrem k zápornému nekonečnu ): y je největší celé číslo, které nepřesahuje x .

Například 23,7 se zaokrouhlí na 23 a −23,2 se zaokrouhlí na −24.

Zaokrouhlování nahoru

  • zaokrouhlit nahoru (nebo vzít strop nebo zaokrouhlit na kladné nekonečno ): y je nejmenší celé číslo, které není menší než x .

Například 23,2 se zaokrouhlí na 24 a −23,7 se zaokrouhlí na −23.

Zaokrouhlování směrem k nule

  • zaokrouhlit na nulu (nebo zkrátit nebo zaokrouhlit od nekonečna ): y je celé číslo, které je nejblíže x , takže je mezi 0 a x (zahrnuto); tj. y je celočíselná část x , bez jejích zlomkových číslic.

Například 23,7 se zaokrouhlí na 23 a −23,7 se zaokrouhlí na −23.

Zaokrouhlování od nuly

  • zaokrouhlit od nuly (nebo zaokrouhlit k nekonečnu ): y je celé číslo, které je nejblíže 0 (nebo ekvivalentně k x ), takže x je mezi 0 a y (zahrnuto).

Například 23,2 se zaokrouhlí na 24 a −23,2 se zaokrouhlí na −24.

Zaokrouhlení na nejbližší celé číslo

Zaokrouhlení čísla x na nejbližší celé číslo vyžaduje určité pravidlo pro přerušení pro případy, kdy x je přesně na půli cesty mezi dvěma celými čísly-tj. Když zlomková část x je přesně 0,5.

Pokud by nebylo 0,5 zlomkových částí, chyby zaokrouhlení zavedené metodou zaokrouhlení na nejbližší by byly symetrické: pro každý zlomek, který se zaokrouhlí dolů (například 0,268), existuje komplementární zlomek (konkrétně 0,732), který se zaokrouhlí nahoru o stejnou částku.

Při zaokrouhlování velké sady čísel s pevným bodem s rovnoměrně rozloženými zlomkovými částmi by se chyby zaokrouhlení o všechny hodnoty, s vynecháním hodnot s 0,5 zlomkovou částí, navzájem statisticky kompenzovaly. To znamená, že očekávaná (průměrná) hodnota zaokrouhlených čísel se rovná očekávané hodnotě původních čísel, když ze sady odstraníme čísla se zlomkovou částí 0,5.

V praxi se obvykle používají čísla s plovoucí desetinnou čárkou , která mají ještě více výpočetních nuancí, protože nejsou rovnoměrně rozmístěna.

Zaokrouhlete polovinu nahoru

Následující pravidlo prolomení tieů, nazývané kulatá polovina nahoru (nebo kulatá polovina směrem k pozitivnímu nekonečnu ), je široce používáno v mnoha disciplínách. To znamená, že poloviční hodnoty x jsou vždy zaokrouhleny nahoru.

  • Pokud je zlomek x přesně 0,5, pak y  =  x  + 0,5

Například 23,5 se zaokrouhlí na 24 a −23,5 se zaokrouhlí na −23.

Některé programovací jazyky (například Java, Python) zde však definují svoji polovinu jako kulatou polovinu od nuly .

Tato metoda vyžaduje pouze kontrolu jedné číslice, aby se určil směr zaokrouhlení v doplňcích dvou a podobných reprezentacích.

Zaokrouhlete polovinu dolů

Lze také použít kulatou polovinu dolů (nebo kulatou polovinu směrem k zápornému nekonečnu ) na rozdíl od běžnější kulaté poloviny nahoru .

  • Pokud je zlomek x přesně 0,5, pak y  =  x  - 0,5

Například 23,5 se zaokrouhlí na 23 a −23,5 se zaokrouhlí na −24.

Zaokrouhlete polovinu směrem k nule

Jeden může také zaokrouhlovat polovinu směrem k nule (nebo zaokrouhlit polovinu od nekonečna ), na rozdíl od konvenční kulaté poloviny od nuly .

  • Pokud je zlomek x přesně 0,5, pak y  =  x  - 0,5, pokud x je kladné, a y  =  x  + 0,5, pokud x je záporné.

Například 23,5 se zaokrouhlí na 23 a −23,5 se zaokrouhlí na −23.

Tato metoda zachází symetricky s kladnými a zápornými hodnotami, a proto je bez celkového kladného/záporného zkreslení, pokud jsou původní čísla se stejnou pravděpodobností kladná nebo záporná. Stále však má zkreslení směrem k nule.

Zaokrouhlete polovinu od nuly

Další běžně používanou a používanou metodou prolomení tieů je kulatá polovina od nuly (nebo kulatá polovina směrem k nekonečnu ), konkrétně:

  • Pokud je zlomek x přesně 0,5, pak y = x + 0,5, pokud x je kladné, a y = x - 0,5, pokud x je záporné.

Například 23,5 se zaokrouhlí na 24 a −23,5 se zaokrouhlí na −24.

To může být efektivnější na binárních počítačích, protože k určení, zda se zaokrouhluje nahoru (na 1) nebo dolů (na 0), je třeba vzít v úvahu pouze první vynechaný bit. Toto je jedna metoda používaná při zaokrouhlování na významné číslice kvůli jeho jednoduchosti.

Tato metoda, známá také jako komerční zaokrouhlování , zachází symetricky s kladnými a zápornými hodnotami, a proto je prostá celkového kladného/záporného zkreslení, pokud jsou původní čísla se stejnou pravděpodobností kladná nebo záporná. Stále však má zkreslení od nuly.

Často se používá pro převody měn a zaokrouhlování cen (když je částka poprvé převedena na nejmenší významnou část měny, například centy v eurech), protože je snadné to vysvětlit pouhým zvážením první zlomkové číslice, nezávisle na doplňkové přesné číslice nebo znak částky (pro přesnou ekvivalenci mezi platící a příjemcem částky).

Poloviční kolo na sudé

Rovnoměrné pravidlo bez kladného/záporného předpětí a bez předpětí směrem k/od nuly je kulaté na polovinu až sudé . Podle této konvence, pokud je zlomková část x 0,5, pak y je sudé celé číslo nejbližší x . Tak se například +23,5 stane +24, stejně jako +24,5; zatímco z −23,5 se stane −24, stejně jako −24,5. Tato funkce minimalizuje očekávanou chybu při sčítání zaokrouhlených čísel, i když jsou vstupy většinou kladné nebo většinou záporné.

Tato varianta metody zaokrouhlení na nejbližší se také nazývá konvergentní zaokrouhlování , zaokrouhlování statistiků , holandské zaokrouhlování , gaussovské zaokrouhlování , liché – sudé zaokrouhlování nebo zaokrouhlování bankéřů .

Toto je výchozí režim zaokrouhlování používaný v operacích IEEE 754 pro výsledky v binárních formátech s plovoucí desetinnou čárkou (viz také nejbližší celočíselná funkce ) a sofistikovanější režim používaný při zaokrouhlování na významné číslice.

Odstraněním předpojatosti, opakované zaokrouhlování nebo odčítání nezávislých čísel poskytne výsledek s chybou, která má tendenci růst v poměru k odmocnině počtu operací spíše než lineárně. Více viz náhodná procházka .

Toto pravidlo však zkresluje distribuci zvýšením pravděpodobnosti vyrovnání v poměru k pravděpodobnosti. Obvykle je to méně důležité než předsudky, které jsou touto metodou eliminovány.

Poloviční kolo až liché

Podobné pravidlo pro přerušení zápasu je půl na liché . V tomto přístupu, pokud je zlomek x 0,5, pak y je liché celé číslo nejbližší x . Například z +23,5 se stane +23, stejně jako +22,5; zatímco z −23,5 se stane −23, stejně jako −22,5.

Tato metoda také neobsahuje kladné/záporné zkreslení a zkreslení směrem k/od nuly.

Tato varianta se téměř nikdy nepoužívá při výpočtech, kromě situací, kdy se chceme vyhnout zvětšování měřítka čísel s plovoucí desetinnou čárkou, které mají omezený rozsah exponentů. Při zaokrouhlení na polovinu na sudé by se nekonečné číslo zaokrouhlilo na nekonečno a malá denormální hodnota by se zaokrouhlila na normální nenulovou hodnotu. Tento režim efektivně upřednostňuje zachování stávající stupnice nerozhodných čísel a vyhýbání se výsledkům mimo rozsah, je-li to možné, pro číselné soustavy sudých radixů (například binární a desítkové).

Náhodné zaokrouhlení na celé číslo

Střídavé tie -breaking

Jedna metoda, nejasnější než většina, je střídat směr při zaokrouhlování čísla na 0,5 zlomkové části. Všechny ostatní jsou zaokrouhleny na nejbližší celé číslo.

  • Kdykoli je zlomková část 0,5, střídejte zaokrouhlování nahoru nebo dolů: pro první výskyt 0,5 zlomkové části zaokrouhlete nahoru; u druhého výskytu zaokrouhlete dolů; a tak dále. (Alternativně lze zaokrouhlení prvních 0,5 dílčí části určit náhodným osivem .)

Pokud se výskyty 0,5 dílčích částí vyskytují podstatně více než restart „počítání“ výskytu, pak je to efektivně neobjektivní. Při zaručeném nulovém zkreslení je užitečné, pokud mají být čísla sečtena nebo zprůměrována.

Náhodné tie -breaking

  • Pokud je zlomková část x 0,5, zvolte y náhodně mezi x + 0,5 a x - 0,5 , se stejnou pravděpodobností. Všechny ostatní jsou zaokrouhleny na nejbližší celé číslo.

Stejně jako zaokrouhlení na polovinu na sudý a zaokrouhlený na polovinu na liché, toto pravidlo je v podstatě prosté celkové předpojatosti, ale je také spravedlivé mezi sudými a lichými hodnotami y . Výhodou oproti alternativnímu dělení tieů je, že poslední směr zaokrouhlení na 0,5 zlomkové části nemusí být „zapamatován“.

Stochastické zaoblení

Zaokrouhlení následujícím způsobem na jedno z nejbližších rozkročených celých čísel s pravděpodobností závislou na blízkosti se nazývá stochastické zaokrouhlení a v průměru poskytne nezaujatý výsledek.

Například 1,6 by bylo zaokrouhleno na 1 s pravděpodobností 0,4 a na 2 s pravděpodobností 0,6.

Stochastické zaokrouhlování může být přesné takovým způsobem, jakým funkce zaokrouhlení nikdy být nemůže. Předpokládejme například, že jeden začal 0 a stokrát přidal 0,3, přičemž zaokrouhluje průběžný součet mezi každým přidáním. Výsledkem by bylo 0 při pravidelném zaokrouhlování, ale při stochastickém zaokrouhlení by očekávaný výsledek byl 30, což je stejná hodnota, jaká by byla získána bez zaokrouhlování. To může být užitečné ve strojovém učení, kde školení může iterativně využívat aritmetiku s nízkou přesností. Stochastické zaokrouhlování je způsob, jak dosáhnout 1-dimenzionálního ditheringu.

Porovnání přístupů zaokrouhlování na celé číslo

Hodnota Funkční metody Randomizované metody
Řízené zaokrouhlování Zaokrouhlete na nejbližší Střídavý tie-break Náhodný tie-break Stochastický
Dolů
(směrem k - )
Nahoru
(směrem k + )
Směrem k 0 Pryč od 0 Half Down
(směrem k - )
Half Up
(směrem k + )
Polovina směrem k 0 Půl cesty od 0 Poloviční až sudý Polovina na Odd Průměrný SD Průměrný SD Průměrný SD
+1,8 +1 +2 +1 +2 +2 +2 +2 +2 +2 +2 +2 0 +2 0 +1,8 0,04
+1,5 +1 +1 +1 +1505 0 +1,5 0,05 +1,5 0,05
+1.2 +1 +1 +1 +1 0 +1 0 +1.2 0,04
+0,8 0 +1 0 +1 +0,8 0,04
+0,5 0 0 0 +0,505 0 +0,5 0,05 +0,5 0,05
+0,2 0 0 0 0 0 0 0 +0,2 0,04
−0,2 -1 0 -1 −0,2 0,04
−0,5 -1 -1 -1 -0,495 0 −0,5 0,05 −0,5 0,05
−0,8 -1 -1 -1 -1 0 -1 0 −0,8 0,04
−1,2 −2 -1 -1 −2 −1,2 0,04
−1,5 −2 −2 −2 -1,495 0 −1,5 0,05 −1,5 0,05
-1,8 −2 −2 −2 −2 0 −2 0 -1,8 0,04

Zaokrouhlení na jiné hodnoty

Zaokrouhlení na zadaný násobek

Nejběžnějším typem zaokrouhlení je zaokrouhlení na celé číslo; nebo obecněji na celočíselný násobek nějakého přírůstku - například zaokrouhlení na celé desetiny sekund, setiny dolaru, na celé násobky 1/2 nebo 1/8 palce, na celé desítky nebo tisíce atd.

Zaokrouhlení čísla x na násobek určité zadané kladné hodnoty m obecně zahrnuje následující kroky:

Například zaokrouhlení x  = 2,1784 dolarů na celé centy (tj. Na násobek 0,01) zahrnuje výpočet 2,1784 / 0,01 = 217,84, poté zaokrouhlení na 218 a nakonec výpočet 218 × 0,01 = 2,18.

Při zaokrouhlování na předem stanovený počet platných číslic přírůstek m závisí na velikosti čísla, které má být zaokrouhleno (nebo na zaokrouhleném výsledku).

Přírůstek m je obvykle konečný zlomek v jakémkoli číselném systému, který se používá k reprezentaci čísel. Pro zobrazení lidem to obvykle znamená desítkovou číselnou soustavu (to znamená, že m je celé číslo krát mocnina 10, jako 1/1000 nebo 25/100). U mezilehlých hodnot uložených v digitálních počítačích to často znamená binární číselnou soustavu ( m je celé číslo krát mocnina 2).

Abstraktní funkce „round ()“ s jedním argumentem, která vrací celé číslo z libovolné skutečné hodnoty, má v sekci zaokrouhlování na celé číslo alespoň tucet odlišných konkrétních definic . Zde je formálně definována abstraktní funkce "roundToMultiple ()" se dvěma argumenty, ale v mnoha případech se používá s implicitní hodnotou m  = 1 pro přírůstek a poté se redukuje na ekvivalentní abstraktní funkci s jedním argumentem, se stejným tuctem odlišné konkrétní definice.

Logaritmické zaokrouhlování

Zaokrouhlení na určený výkon

Zaokrouhlení na zadaný výkon se velmi liší od zaokrouhlení na zadaný násobek ; například ve výpočetní technice je běžné zaokrouhlit číslo na celou mocninu 2. Kroky obecně zaokrouhlení kladného čísla x na mocninu zadaného celého čísla b větší než 1 jsou:

Mnoho z námitek použitelných na zaokrouhlení na násobek je použitelné na zaokrouhlení na mocninu.

Měřítko zaoblení

Tento typ zaokrouhlení, kterému se také říká zaokrouhlení na logaritmickou stupnici , je variantou zaokrouhlení na zadanou mocninu . Zaokrouhlení na logaritmické stupnici se provádí tak, že se vezme log částky a provede se normální zaokrouhlení na nejbližší hodnotu na stupnici logu.

Například odpory jsou dodávány s preferovanými čísly v logaritmickém měřítku. Zejména pro rezistory s 10% přesností jsou dodávány s nominálními hodnotami 100, 120, 150, 180, 220 atd. Zaokrouhlenými na násobky 10 ( řada E12 ). Pokud výpočet indikuje odpor 165 ohmů, pak log (150) = 2,176, log (165) = 2,217 a log (180) = 2,255. Logaritmus 165 je blíže logaritmu 180, a proto by první volbou byl odpor 180 ohmů, pokud neexistují žádné další úvahy.

Zda se hodnota x ∈ ( a , b ) zaokrouhluje na a nebo b, závisí na tom, zda je čtvercová hodnota x 2 větší nebo menší než součin ab . Hodnota 165 zaokrouhlí na 180 v příkladu rezistorů, protože 165 2 = 27225 je větší než 150 × 180 = 27000 .

Zaokrouhlování s plovoucí desetinnou čárkou

V aritmetice s pohyblivou řádovou čárkou má zaokrouhlení za cíl změnit danou hodnotu x na hodnotu y se zadaným počtem platných číslic. Jinými slovy, y by měl být násobkem čísla m, které závisí na velikosti x . Číslo m je mocnina báze (obvykle 2 nebo 10) reprezentace s plovoucí desetinnou čárkou.

Kromě tohoto detailu platí pro zaokrouhlování čísel s plovoucí desetinnou čárkou také všechny výše uvedené varianty zaokrouhlování. Algoritmus pro takové zaokrouhlení je uveden v části Měřítko zaokrouhlení výše, ale s konstantním faktorem škálování s  = 1 a celočíselnou základnou b  > 1.

Pokud by zaokrouhlený výsledek přetekl, je výsledkem pro směrované zaokrouhlení buď příslušné znaménko nekonečna při „zaokrouhlování od nuly“, nebo nejvyšší reprezentativní kladné konečné číslo (nebo nejnižší reprezentativní záporné konečné číslo, pokud x je záporné), když „zaokrouhlení směrem k nule “. Výsledkem přetečení pro obvyklý případ zaokrouhlení na nejbližší je vždy příslušné nekonečno.

Zaokrouhlení na jednoduchý zlomek

V některých kontextech je žádoucí zaokrouhlit dané číslo x na „úhledný“ zlomek - tedy nejbližší zlomek y  =  m / n, jehož čitatel m a jmenovatel n nepřekročí dané maximum. Tento problém je docela odlišný od zaokrouhlování hodnoty na pevný počet desetinných nebo binárních číslic nebo na násobek dané jednotky m . Tento problém souvisí s Fareyho sekvencemi , stromem Stern – Brocot a pokračujícími zlomky .

Zaokrouhlení na dostupnou hodnotu

Hotové řezivo , papír na psaní, kondenzátory a mnoho dalších produktů se obvykle prodává pouze v několika standardních velikostech.

Mnoho návrhových postupů popisuje, jak vypočítat přibližnou hodnotu, a poté „zaokrouhlit“ na nějakou standardní velikost pomocí frází jako „zaokrouhlit dolů na nejbližší standardní hodnotu“, „zaokrouhlit nahoru na nejbližší standardní hodnotu“ nebo „zaokrouhlit na nejbližší standardní hodnotu“ .

Když je sada upřednostňovaných hodnot rovnoměrně rozložena na logaritmické stupnici, lze výběr nejbližší upřednostňované hodnoty k jakékoli dané hodnotě považovat za formu zmenšeného zaoblení . Takto zaoblené hodnoty lze přímo vypočítat.

Zaokrouhlování v jiných kontextech

Dithering a chybová difúze

Při digitalizaci spojitých signálů , jako jsou zvukové vlny, je celkový účinek řady měření důležitější než přesnost každého jednotlivého měření. Za těchto okolností se normálně používá dithering a související technika, difúze chyb . K dosažení výstupu analogového typu ze setrvačného zařízení rychlým pulzováním výkonu s proměnným pracovním cyklem se používá příbuzná technika zvaná pulzně šířková modulace .

Difúze chyb se snaží zajistit, aby byla chyba v průměru minimalizována. Při řešení mírného sklonu od jedné do nuly by byl výstup prvních několik členů nulový, dokud se součet chyby a aktuální hodnoty nestane větším než 0,5, v takovém případě je výstupem 1 a rozdíl odečten od chyby zatím. Dithering Floyd – Steinberg je populární postup difúze chyb při digitalizaci obrázků.

Jako jednorozměrný příklad předpokládejme, že čísla 0,9677 , 0,9204 , 0,7451 a 0,3091 se vyskytují v pořadí a každé má být zaokrouhleno na násobek 0,01 . V tomto případě jsou kumulativní částky, 0,9677 , 1,8881 = 0,9677 + 0,9204 , 2,6332 = 0,9677 + 0,9204 + 0,7451 a 2,9423 = 0,9677 + 0,9204 + 0,7451 + 0,3091 , každý zaokrouhlen na násobek 0,01 : 0,97 , 1,89 , 2,63 a 2,94 . První z nich a rozdíly sousedních hodnot dávají požadované zaoblené hodnoty: 0,97 , 0,92 = 1,89 - 0,97 , 0,74 = 2,63 - 1,89 a 0,31 = 2,94 - 2,63 .

Monte Carlo aritmetika

Aritmetika Monte Carlo je technika v metodách Monte Carlo, kde je zaokrouhlování náhodně nahoru nebo dolů. Stochastické zaokrouhlování lze použít pro aritmetiku Monte Carlo, ale obecně se častěji používá pouze zaokrouhlování nahoru nebo dolů se stejnou pravděpodobností. Opakované běhy poskytnou náhodné rozdělení výsledků, které může indikovat stabilitu výpočtu.

Přesný výpočet se zaoblenou aritmetikou

K vyhodnocení přesné hodnoty funkce s celočíselnou doménou a rozsahem je možné použít zaoblenou aritmetiku. Například, pokud víme, že celé číslo n je dokonalý čtverec, můžeme vypočítat jeho druhou odmocninu převedením n s plovoucí desetinnou čárkou hodnotu Z , výpočtu přibližné odmocniny x a z, s plovoucí desetinnou čárkou, a pak zaokrouhlení x na nejbližší celé číslo y . Pokud n není příliš velké, chyba zaokrouhlení s plovoucí desetinnou čárkou v x bude menší než 0,5, takže zaokrouhlenou hodnotou y bude přesná odmocnina n . To je v zásadě důvod, proč by pravidla skluzu mohla být použita pro přesnou aritmetiku.

Dvojité zaokrouhlení

Zaokrouhlení čísla dvakrát za sebou na různé úrovně přesnosti, přičemž tato přesnost je hrubší, není zaručeno, že poskytne stejný výsledek jako zaokrouhlení jednou na konečnou přesnost, s výjimkou případu řízeného zaoblení. Například zaokrouhlení 9,46 na jedno desetinné místo dává 9,5 a poté 10 při zaokrouhlování na celé číslo pomocí zaokrouhlení na polovinu na sudé, ale při přímém zaokrouhlení na celé číslo by dalo 9. Borman a Chatfield diskutují o důsledcích dvojitého zaokrouhlení při porovnávání dat zaokrouhlených na jedno desetinné místo s limity specifikací vyjádřenými pomocí celých čísel.

Ve věci Martinez v. Allstate a Sendejo v. Zemědělci , vedené v soudním sporu mezi lety 1995 a 1997, pojišťovny tvrdily, že dvojnásobné zaokrouhlování pojistného je přípustné a ve skutečnosti je vyžadováno. Americké soudy rozhodovaly proti pojišťovnám a nařídily jim, aby přijaly pravidla zajišťující jednotné zaokrouhlování.

Některé počítačové jazyky a standard IEEE 754-2008 vyžadují, aby v přímých výpočtech nebyl výsledek zaokrouhlen dvakrát. To byl u Javy zvláštní problém, protože je navržen tak, aby byl spuštěn identicky na různých počítačích. K dosažení tohoto cíle bylo nutné použít speciální programovací triky s x87 s plovoucí desetinnou čárkou. Jazyk Java byl změněn, aby umožňoval různé výsledky tam, kde na rozdílu nezáleží, a vyžadoval použití kvalifikátor strictfp, když výsledky musí přesně odpovídat; v Javě 17 byla obnovena přísná plovoucí čárka.

V některých algoritmech je mezivýsledek vypočítán s větší přesností a poté musí být zaokrouhlen na konečnou přesnost. Dvojitému zaokrouhlení se lze vyhnout výběrem adekvátního zaokrouhlení pro mezipočet. To spočívá v vyhýbání se zaokrouhlování na střední body pro konečné zaokrouhlení (kromě případů, kdy je střední bod přesný). V binární aritmetice je myšlenka zaokrouhlit výsledek směrem k nule a nastavit nejméně významný bit na 1, pokud je zaokrouhlený výsledek nepřesný; tomuto zaokrouhlení se říká lepivé zaokrouhlování . Ekvivalentně spočívá v vrácení mezivýsledku, když je přesně reprezentovatelný, a nejbližší číslo s plovoucí desetinnou čárkou s lichým významem jinak; proto je také známý jako zaokrouhlování na liché .

Dilema výrobce stolů

William M. Kahan vytvořil termín „dilema výrobce stolů“ pro neznámou cenu zaokrouhlování transcendentálních funkcí :

„Nikdo neví, kolik by stálo vypočítat y w správně zaokrouhlené pro každé dva argumenty s plovoucí desetinnou čárkou, při kterých nepřetéká/podteče . Renomované matematické knihovny počítají elementární transcendentální funkce většinou o něco více než o polovinu ulp a téměř vždy i v rámci jednoho ULP. Proč nemůže y w zaokrouhlí během půl ULP jako SQRT? Protože nikdo neví, kolik výpočtů by to stálo ... Bez cesta neexistuje předpovědět, kolik další číslice budou muset být provedeny pro výpočet transcendentální výraz a zaokrouhlete jej správně na předem přiřazený počet číslic. I skutečnost (je -li pravdivá), že nakonec postačí konečný počet dalších číslic, může být hluboká věta. “

Standard IEEE 754 s plovoucí desetinnou čárkou zaručuje, že sčítání, odčítání, násobení, dělení, fúzované násobení – přidání , druhá odmocnina a zbytek s plovoucí desetinnou čárkou poskytnou správně zaokrouhlený výsledek operace s nekonečnou přesností. Žádná taková záruka nebyla poskytnuta ve standardu 1985 pro složitější funkce a jsou obvykle přesné pouze do posledního bitu v nejlepším případě. Standard 2008 však zaručuje, že vyhovující implementace poskytne správně zaokrouhlené výsledky, které respektují aktivní režim zaokrouhlování; implementace funkcí je však volitelná.

Pomocí Gelfondovy – Schneiderovy věty a Lindemann – Weierstrassovy věty lze dokázat, že mnoho standardních elementárních funkcí vrací transcendentální výsledky, když jsou dány racionální nenulové argumenty; proto je vždy možné takové funkce správně zaokrouhlit. Stanovení limitu pro danou přesnost na tom, jak přesné výsledky je třeba vypočítat, než lze zaručit správně zaokrouhlený výsledek, však může vyžadovat spoustu času na výpočet nebo může být mimo dosah. V praxi, když tento limit není znám nebo je příliš velký, musí být při implementaci učiněno určité rozhodnutí (viz níže), ale podle pravděpodobnostního modelu lze správné zaokrouhlení uspokojit s velmi vysokou pravděpodobností.

Některé programovací balíčky nabízejí správné zaokrouhlení. Balíček GNU MPFR poskytuje správně zaokrouhlené výsledky libovolné přesnosti. Některé další knihovny implementují elementární funkce se správným zaokrouhlením s dvojitou přesností:

  • IBM je přesný přenosný matematická knihovna (zkráceně APMathLib nebo jen MathLib), také volal libultim v zaokrouhlení pouze nejbližší. Tato knihovna využívá až 768 bitů pracovní přesnosti. Byl zařazen do knihovny GNU C v roce 2001, ale „pomalé cesty“ (zajišťující správné zaokrouhlování) byly v letech 2018 až 2021 odstraněny.
  • Libmcr Sun Microsystems ve 4 režimech zaokrouhlování. V obtížných případech tato knihovna také používá vícenásobnou přesnost a počet slov se zvýší o 2 pokaždé, když dojde k dilematu tvůrce tabulky (s nedefinovaným chováním ve velmi nepravděpodobném případě, že je dosaženo nějakého limitu stroje).
  • CRlibm, napsáno ve starém týmu Arénaire (LIP, ENS Lyon ). Podporuje 4 režimy zaokrouhlování a je osvědčený.

Existují počitatelná čísla, pro která nelze zaokrouhlenou hodnotu nikdy určit bez ohledu na počet číslic, které jsou vypočítány. Nelze uvést konkrétní instance, ale to vyplývá z nerozhodnutelnosti problému zastavení . Pokud je například Goldbachova domněnka pravdivá, ale neprokazatelná , nelze výsledek zaokrouhlení následující hodnoty nahoru na další celé číslo určit: buď 1+10 - n, kde n je první sudé číslo větší než 4, což není součet dvě prvočísla, nebo 1, pokud takové číslo neexistuje. Zaokrouhlený výsledek je 2, pokud takové číslo n existuje, a 1 jinak. Hodnotu před zaokrouhlením lze však aproximovat s jakoukoli danou přesností, i když je dohad neprokazatelný.

Interakce s vyhledáváním řetězců

Zaokrouhlování může nepříznivě ovlivnit vyhledávání řetězců pro číslo. Například π zaokrouhleno na čtyři číslice je „3,1416“, ale jednoduché vyhledávání tohoto řetězce nezjistí „3,14159“ ani žádnou jinou hodnotu π zaokrouhlenou na více než čtyři číslice. Naproti tomu zkrácení tímto problémem netrpí; například jednoduché vyhledávání řetězců pro „3,1415“, které je π zkráceno na čtyři číslice, zjistí hodnoty π zkrácené na více než čtyři číslice.

Dějiny

Pojem zaokrouhlování je velmi starý, možná dokonce starší než koncept rozdělení. Některé starověké hliněné tabulky nalezené v Mezopotámii obsahují tabulky se zaoblenými hodnotami převrácených hodnot a odmocnin v základně 60. Zaoblené aproximace na π , délka roku a délka měsíce jsou také staré - viz příklady na základně 60 .

Metoda round-to-even slouží jako norma ASTM (E-29) od roku 1940. Původ pojmů nezaujaté zaokrouhlování a zaokrouhlování statistiků je dosti samozřejmý. Ve čtvrtém vydání Pravděpodobnosti a teorie chyb z roku 1906 to Robert Simpson Woodward nazval „pravidlem počítače“, což naznačuje, že to tehdy běžně používaly lidské počítače, které počítaly matematické tabulky. Churchill Eisenhart naznačil, že tato praxe byla již ve 40. letech 20. století v analýze dat „dobře zavedená“.

Původ pojmu zaokrouhlování bankéřů zůstává nejasný. Pokud byla tato metoda zaokrouhlování někdy standardem v bankovnictví, důkazy se ukázaly jako extrémně obtížné najít. Naopak část 2 zprávy Evropské komise Zavedení eura a zaokrouhlování částek v měně naznačuje, že dříve neexistoval standardní přístup k zaokrouhlování v bankovnictví; a stanoví, že částky „napůl“ by měly být zaokrouhleny nahoru.

Do 80. let 20. století byla metoda zaokrouhlování používaná v počítačové aritmetice s pohyblivou řádovou čárkou obvykle fixována hardwarem, špatně dokumentována, nekonzistentní a pro každou značku a model počítače odlišná. Tato situace se změnila poté, co většina výrobců počítačů přijala standard IEEE 754 s plovoucí desetinnou čárkou. Standard umožňuje uživateli vybrat si z několika režimů zaokrouhlení a v každém případě přesně určuje, jak by měly být výsledky zaokrouhleny. Díky těmto vlastnostem byly numerické výpočty předvídatelnější a na stroji nezávislé a umožnily efektivní a konzistentní implementaci intervalové aritmetiky .

V současné době má mnoho výzkumů tendenci se zaokrouhlovat na násobky 5 nebo 2. Například Jörg Baten použil v mnoha studiích věkovou hromadu k vyhodnocení úrovně počtů starověkých populací. Přišel s indexem ABCC , který umožňuje srovnání počtů mezi regiony možné bez jakýchkoli historických zdrojů, kde byla měřena gramotnost obyvatel .

Zaokrouhlovací funkce v programovacích jazycích

Většina programovacích jazyků poskytuje funkce nebo speciální syntaxi k zaokrouhlování zlomkových čísel různými způsoby. Nejranější číselné jazyky, jako FORTRAN a C , by poskytovaly pouze jednu metodu, obvykle zkrácení (směrem k nule). Tato výchozí metoda může být implikována v určitých kontextech, například při přiřazování zlomkového čísla celočíselné proměnné nebo pomocí zlomkového čísla jako indexu pole . Jiné druhy zaokrouhlování musely být explicitně naprogramovány; například zaokrouhlení kladného čísla na nejbližší celé číslo lze implementovat přidáním 0,5 a zkrácením.

V posledních desetiletích však syntaxe a standardní knihovny většiny jazyků běžně poskytovaly alespoň čtyři základní funkce zaokrouhlování (nahoru, dolů, na nejbližší a směrem k nule). Metoda tie-breaku se může lišit v závislosti na jazyce a verzi nebo ji může vybrat programátor. Několik jazyků následuje příklad standardu IEEE 754 s plovoucí desetinnou čárkou a definuje tyto funkce jako převzetí argumentu s dvojitou přesností float a vrácení výsledku stejného typu, který lze v případě potřeby převést na celé číslo. Tento přístup může zabránit falešnému přetečení, protože typy s plovoucí desetinnou čárkou mají větší rozsah než celočíselné typy. Některé jazyky, například PHP , poskytují funkce, které zaokrouhlí hodnotu na zadaný počet desetinných číslic (např. Od 4321,5678 do 4321,57 nebo 4300). Mnoho jazyků navíc nabízí funkci formátování printf nebo podobného řetězce, která umožňuje převést zlomkové číslo na řetězec zaokrouhlený na uživatelem zadaný počet desetinných míst ( přesnost ). Na druhou stranu zkrácení (zaokrouhlení na nulu) je stále výchozí metodou zaokrouhlování, kterou používá mnoho jazyků, zejména pro dělení dvou celočíselných hodnot.

Naopak, CSS a SVG nedefinují žádnou konkrétní maximální přesnost pro čísla a měření, která jsou zpracována a vystavena v jejich DOM a v jejich rozhraní IDL jako řetězce, jako by měly nekonečnou přesnost , a nediskriminují mezi celými čísly a pohyblivými- bodové hodnoty; implementace těchto jazyků však obvykle převede tato čísla na hodnoty s plovoucí desetinnou čárkou s dvojitou přesností IEEE 754 před vystavením vypočítaných číslic s omezenou přesností (zejména v rámci standardních vazeb rozhraní JavaScript nebo ECMAScript ).

Další standardy zaokrouhlování

Některé obory nebo instituce vydaly standardy nebo směrnice pro zaokrouhlování.

Pozorování počasí v USA

V pokynu vydaném v polovině roku 1966 americký úřad federálního koordinátora pro meteorologii stanovil, že údaje o počasí by měly být zaokrouhleny na nejbližší kulaté číslo s pravidlem rovnosti „zaokrouhleno nahoru“. Například 1,5 zaokrouhleno na celé číslo by mělo být 2 a −1,5 by mělo být −1. Před tímto datem platilo pravidlo nerozhodného výsledku „půl na půl od nuly“.

Záporná nula v meteorologii

Někteří meteorologové mohou napsat „−0“, aby označili teplotu mezi 0,0 a –0,5 stupně (výlučně), která byla zaokrouhlena na celé číslo. Tento zápis se používá, když je záporné znaménko považováno za důležité, bez ohledu na to, jak malá je velikost; například při zaokrouhlování teplot ve stupních Celsia , kde pod nulou znamená zmrazení.

Viz také

Poznámky

Reference

externí odkazy