Pyöristäminen | numeroarvon korvaaminen toisella arvolla, joka on suunnilleen sama

Numeerisen arvon pyöristäminen tarkoittaa sen korvaamista toisella arvolla, joka on suunnilleen yhtä suuri mutta lyhyempi, yksinkertaisempi tai selkeämpi. Esimerkiksi 23,74 Yhdysvaltain dollaria voidaan pyöristää 24 dollariksi, murtoluku 312/937 voidaan pyöristää 1/3:ksi ja lauseke {\displaystyle {\sqrt {2}}} voidaan pyöristää 1,41:ksi.

Pyöristäminen tehdään usein tarkoituksella, jotta saadaan arvo, joka on helpompi kirjoittaa ja käsitellä kuin alkuperäinen arvo. Pyöristäminen voidaan tehdä myös lasketun luvun tarkkuuden osoittamiseksi; esimerkiksi määrä, joka on laskettu 123 456:ksi, mutta jonka tiedetään olevan tarkka vain muutaman sadan yksikön tarkkuudella, on parempi ilmoittaa "noin 123 500".

Toisaalta pyöristäminen voi aiheuttaa jonkin verran pyöristysvirheitä. Pyöristäminen on lähes väistämätöntä monissa laskutoimituksissa, erityisesti kun jaetaan kaksi lukua kokonaislukuna tai tehdään kiinteän pisteen aritmetiikkaa, kun lasketaan matemaattisia funktioita, kuten neliöjuuria, logaritmeja ja sinuksia, tai kun käytetään liukulukumuotoista esitystä, jossa on kiinteä määrä merkitseviä numeroita. Laskutoimitusten sarjassa nämä pyöristysvirheet yleensä kasautuvat, ja tietyissä "huonokuntoisissa" tapauksissa ne voivat tehdä tuloksesta merkityksettömän.

Transsendentaalisten matemaattisten funktioiden tarkka pyöristäminen on vaikeaa, koska etukäteen ei voida tietää, kuinka monta ylimääräistä numeroa on laskettava, jotta voidaan päättää, pyöristetäänkö ylös- vai alaspäin. Tämä ongelma tunnetaan nimellä "taulukonmuokkaajan dilemma" (jäljempänä).

Pyöristämisellä on monia yhtäläisyyksiä kvantisointiin, joka tapahtuu, kun fysikaaliset suureet on koodattava numeroiksi tai digitaalisiksi signaaleiksi.




 

Pyöristystyypit

Tyypillisiä pyöristysongelmia voivat olla:

  • Irrationaalisen luvun lähentäminen murtoluvulla. Esimerkiksi π luvulla 22/7.
  • Murtoluvun approksimointi jaksollisen desimaalilaajennuksen avulla äärellisellä desimaaliluvulla. Esimerkiksi 5/3 luvulla 1,6667.
  • Rationaaliluvun korvaaminen murtoluvulla, jonka osoittaja ja nimittäjä ovat pienemmät. Esimerkiksi 3122/9417 1/3:lla.
  • Murtoluvun korvaaminen desimaaliluvulla, jossa on vähemmän numeroita. Esimerkiksi 2,1784 dollaria 2,18 dollarilla.
  • Desimaalisen kokonaisluvun korvaaminen kokonaisluvulla, jossa on enemmän nollia perässä. Esimerkiksi. 23 217 ihmistä 23 200 ihmisellä.
  • Arvon korvaaminen määritetyn määrän moninkertaisella määrällä. Esimerkiksi. 27,2 sekuntia 30 sekunnilla (15:n monikerta).

 

Pyöristäminen tiettyyn inkrementtiin

Yleisin pyöristystapa on pyöristäminen kokonaislukuun tai yleisemmin kokonaisluvun kerrannaisuuteen jostakin suuruusluokasta, kuten pyöristäminen sekunnin kymmenesosiin, dollarin sadasosiin, 1/2 tai 1/8 tuuman kokonaisiin kerrannaisuuksiin, kokonaisiin kymmeniin tai tuhansiin jne.

Yleisesti ottaen luvun x pyöristäminen jonkin määritellyn inkrementin m kerrannaisiksi tapahtuu seuraavasti:

  1. Jaa x m:llä ja anna tulokseksi y;
  2. Pyöristetään y kokonaisluvuksi, kutsutaan sitä q:ksi;
  3. Kerro q:llä m, niin saat pyöristetyn arvon z.

{\displaystyle z=\mathrm {round} (x,m)=\mathrm {round} (x/m)\cdot m\,}

Esimerkiksi pyöristämällä x = 2,1784 dollaria kokonaisiksi senteiksi (eli 0,01:n kertoimeksi) lasketaan y = x/m = 2,1784/0,01 = 217,84, pyöristetään y kokonaislukuun q = 218 ja lopuksi lasketaan z = q×m = 218×0,01 = 2,18.

Kun pyöristetään ennalta määrättyyn merkitsevien numeroiden määrään, lisäys m riippuu pyöristettävän luvun (tai pyöristetyn tuloksen) suuruudesta.

Lisäys m on yleensä äärellinen murtoluku missä tahansa numerojärjestelmässä, jota käytetään lukujen esittämiseen. Ihmisille näytettäessä tämä tarkoittaa yleensä desimaalilukujärjestelmää (eli m on kokonaisluku kertaa 10:n potenssi, kuten 1/1000 tai 25/100). Digitaalisiin tietokoneisiin tallennettuja väliarvoja varten se tarkoittaa usein binääristä numerojärjestelmää (m on kokonaisluku kertaa 2:n potenssi).

Abstraktilla yhden argumentin "round()"-funktiolla, joka palauttaa kokonaisluvun mielivaltaisesta reaaliarvosta, on ainakin kymmenkunta erillistä konkreettista määritelmää, jotka esitellään kokonaisluvuksi pyöristämistä käsittelevässä osiossa. Abstrakti kaksiargumenttinen funktio "round()" määritellään muodollisesti tässä, mutta monissa tapauksissa sitä käytetään implisiittisen arvon m = 1 kanssa lisäyksenä, jolloin se redusoituu vastaavaksi abstraktiksi yksiargumenttiseksi funktioksi, jolla on myös kymmenkunta erillistä konkreettista määritelmää.


 

Pyöristäminen kokonaisluvuksi

Pyöristämisen perusmuoto on korvata mielivaltainen luku kokonaisluvulla. Kaikki seuraavat pyöristysmuodot ovat konkreettisia toteutuksia abstraktista yhden argumentin "round()"-funktiosta, joka esiteltiin ja jota käytettiin edellisissä kappaleissa.

Luku y voidaan pyöristää monella tavalla kokonaislukuun q. Yleisimmät tavat ovat seuraavat

  • Pyöristetään alaspäin (tai otetaan alakerta tai pyöristetään kohti miinus ääretöntä): q on suurin kokonaisluku, joka ei ylitä y:tä.

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

  • Pyöristetään ylöspäin (tai otetaan katto, tai pyöristetään kohti ääretöntä): q on pienin kokonaisluku, joka ei ole pienempi kuin y.

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

  • Pyöristetään kohti nollaa (tai katkaistaan tai pyöristetään pois äärettömästä): q on y:n kokonaislukuosa ilman murtolukuja.

{\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 \,}

  • Pyöristäminen poispäin nollasta (tai pyöristäminen kohti ääretöntä): jos y on kokonaisluku, q on y; muussa tapauksessa q on kokonaisluku, joka on lähimpänä 0:ta ja joka on sellainen, että y on 0:n ja q:n välillä.

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

  • Pyöristetään lähimpään: q on kokonaisluku, joka on lähimpänä y:tä. Tämä kirjoitetaan joskus seuraavasti: {\displaystyle q=\lfloor y\rceil } (ks. jäljempänä tasapelinratkaisusäännöt).

Neljää ensimmäistä menetelmää kutsutaan suunnatuksi pyöristykseksi, sillä kaikki siirtymät alkuperäisestä luvusta y pyöristettyyn arvoon q suuntautuvat kohti samaa raja-arvoa (0, +∞ tai -∞) tai poispäin siitä.

Jos y on positiivinen, alaspäin pyöristäminen on sama kuin nollaan päin pyöristäminen ja ylöspäin pyöristäminen on sama kuin nollasta poispäin pyöristäminen. Jos y on negatiivinen, alaspäin pyöristäminen on sama kuin nollasta poispäin pyöristäminen ja ylöspäin pyöristäminen on sama kuin nollaan päin pyöristäminen. Joka tapauksessa, jos y on kokonaisluku, q on vain y. Seuraava taulukko havainnollistaa näitä pyöristysmenetelmiä:

y

pyöristää
alaspäin
(kohti -∞)


yhteenveto
(kohti +∞)

pyöristetään
kohti
nollaa

pyöristetään
nollasta
 poispäin


pyöristetään
lähimpään

+23.67

+23

+24

+23

+24

+24

+23.50

+23

+24

+23

+24

+23 tai +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 tai -24

-23.67

-24

-23

-23

-24

-24

Kun useita laskutoimituksia tehdään peräkkäin, pyöristysmenetelmän valinnalla voi olla hyvin merkittävä vaikutus tulokseen. Tunnettu esimerkki liittyy Vancouverin pörssin vuonna 1982 perustamaan uuteen indeksiin. Indeksi asetettiin aluksi 1000 000:een, ja 22 kuukauden kuluttua se oli laskenut noin 520:een - vaikka osakkeiden hinnat olivat yleensä nousseet tuona aikana. Ongelma johtui siitä, että indeksi laskettiin uudelleen tuhansia kertoja päivässä ja pyöristettiin aina kolmeen desimaaliin, jolloin pyöristysvirheitä kertyi. Uudelleenlaskenta paremmalla pyöristyksellä antoi saman ajanjakson lopussa indeksin arvoksi 1098,892.


 

Tie-breaking

Luvun y pyöristäminen lähimpään kokonaislukuun vaatii jonkin tasapelisäännön niitä tapauksia varten, joissa y on täsmälleen kahden kokonaisluvun puolivälissä - eli kun y:n murto-osa on täsmälleen 0,5.

Pyöreä puoli ylöspäin

Seuraavaa tasapelinratkaisusääntöä, jota kutsutaan nimellä round half up (tai round half towards plus infinity), käytetään laajalti monilla tieteenaloilla. Toisin sanoen puolet arvoista y pyöristetään aina ylöspäin.

  • Jos y:n murtoluku on täsmälleen 0,5, q = y + 0,5.

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

Esimerkiksi tämän säännön mukaan arvo 23,5 pyöristetään arvoksi 24, mutta -23,5 pyöristetään arvoksi -23.

Tämä on toinen kahdesta säännöstä, joita yleensä opetetaan Yhdysvaltain matematiikan alkeisluokissa.

Ilman 0,5:n murtolukuja pyöristysvirheet, joita lähimpään pyöristäminen aiheuttaa, olisivat symmetrisiä: jokaista ylöspäin pyöristettyä murtolukua (esimerkiksi 0,268) kohti on olemassa vastaava murtoluku (eli 0,732), joka pyöristetään alaspäin saman verran. Kun pyöristetään suuri joukko lukuja, joissa on satunnaisia murto-osia, nämä pyöristysvirheet kompensoivat tilastollisesti toisiaan, ja pyöristettyjen lukujen odotettu (keskimääräinen) arvo olisi sama kuin alkuperäisten lukujen odotettu arvo.

Tasatuloksen pyöristyssääntö ei kuitenkaan ole symmetrinen, sillä murtoluvut, jotka ovat täsmälleen 0,5, pyöristetään aina ylöspäin. Tämä epäsymmetria aiheuttaa positiivisen harhan pyöristysvirheissä. Jos esimerkiksi murtoluku y koostuu kolmesta satunnaisesta desimaaliluvusta, q:n odotusarvo on 0,0005 suurempi kuin y:n odotusarvo. Tästä syystä pyöristämistä lähimpään pyöristämissäännöllä round half up kutsutaan (epäselvästi) myös epäsymmetriseksi pyöristämiseksi.

Yksi syy pyöristämiseen 0,5:een on se, että vain yhtä numeroa tarvitsee tutkia. Kun esimerkiksi nähdään 17,50000..., kolme ensimmäistä lukua, 17,5, määrittää, että luku pyöristetään ylöspäin 18:aan. Jos käytettäisiin päinvastaista sääntöä (pyöristetään puoleen alaspäin), kaikki nollan desimaalit olisi tutkittava sen määrittämiseksi, onko arvo täsmälleen 17,5.

Pyöreä puoli alaspäin

Voidaan myös käyttää pyöristystä puoli alaspäin (tai pyöristystä puoli alaspäin miinus ääretön) yleisemmän pyöristyksen puoli ylöspäin sijaan (pyöristys puoli ylöspäin on yleinen konventio, mutta se ei ole muuta kuin konventio).

  • Jos y:n murtoluku on täsmälleen 0,5, q = y - 0,5.

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

Esimerkiksi 23,5 pyöristetään 23:ksi ja -23,5 pyöristetään -24:ksi.

Tasatuloksen pyöristäminen puoli alaspäin ei ole symmetrinen sääntö, sillä murtoluvut, jotka ovat täsmälleen 0,5, pyöristetään aina alaspäin. Tämä epäsymmetria aiheuttaa negatiivisen harhan pyöristysvirheissä. Jos esimerkiksi murtoluku y koostuu kolmesta satunnaisesta desimaaliluvusta, q:n odotusarvo on 0,0005 pienempi kuin y:n odotusarvo. Tästä syystä pyöristämistä lähimpään pyöristämissäännöllä round half down kutsutaan (epäselvästi) myös epäsymmetriseksi pyöristämiseksi.

Pyöreä puolikas nollasta

Toinen yleisesti opetettu ja käytetty tasapelinratkaisumenetelmä on puolet nollasta poispäin pyöristäminen (tai puolet äärettömään päin pyöristäminen):

  • Jos y:n murtoluku on täsmälleen 0,5, q = y + 0,5, jos y on positiivinen, ja q = y - 0,5, jos y on negatiivinen.

{\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 \,}

Esimerkiksi 23,5 pyöristetään 24:ksi ja -23,5 pyöristetään -24:ksi.

Tämä menetelmä käsittelee positiivisia ja negatiivisia arvoja symmetrisesti, joten siinä ei ole yleistä harhaa, jos alkuperäiset luvut ovat positiivisia tai negatiivisia yhtä suurella todennäköisyydellä. Tämä sääntö aiheuttaa kuitenkin edelleen positiivisen harhan positiivisille luvuille ja negatiivisen harhan negatiivisille luvuille.

Sitä käytetään usein valuuttamuunnoksissa ja hintojen pyöristyksissä (kun määrä muunnetaan ensin valuutan pienimpään merkitsevään alajaotteluun, kuten euron sentteihin), koska se on helppo selittää ottamalla huomioon vain ensimmäinen murtoluku riippumatta täydentävistä tarkkuusluvuista tai summan merkistä (jos summan maksajan ja vastaanottajan välillä on tiukka vastaavuus).

Pyöreä puolikas kohti nollaa

Voidaan myös pyöristää puolet kohti nollaa (tai pyöristää puolet poispäin äärettömyydestä) toisin kuin yleisemmin pyöristämällä puolet poispäin nollasta (pyöristäminen poispäin nollasta on yleinen tapa, mutta se on vain tapa).

  • Jos y:n murtoluku on täsmälleen 0,5, q = y - 0,5, jos y on positiivinen, ja q = y + 0,5, jos y on negatiivinen.

{\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 \,}

Esimerkiksi 23,5 pyöristetään 23:ksi ja -23,5 pyöristetään -23:ksi.

Menetelmä käsittelee myös positiivisia ja negatiivisia arvoja symmetrisesti, joten se ei aiheuta yleistä vääristymää, jos alkuperäiset luvut ovat positiivisia tai negatiivisia yhtä suurella todennäköisyydellä. Tämä sääntö aiheuttaa kuitenkin edelleen negatiivisen harhan positiivisille luvuille ja positiivisen harhan negatiivisille luvuille.

Pyöreä puolikas tasan

Vielä vähemmän puolueellinen tasapelin ratkaisusääntö on puolet tasan, nimittäin

  • Jos y:n murtoluku on 0,5, q on y:tä lähimpänä oleva parillinen kokonaisluku.

Näin esimerkiksi +23,5 muuttuu +24:ksi, +22,5 muuttuu +22:ksi, -22,5 muuttuu -22:ksi ja -23,5 muuttuu -24:ksi.

Menetelmä käsittelee myös positiivisia ja negatiivisia arvoja symmetrisesti, joten se ei aiheuta yleistä vääristymää, jos alkuperäiset luvut ovat positiivisia tai negatiivisia yhtä suurella todennäköisyydellä. Lisäksi useimmilla järkevillä y-arvojen jakaumilla pyöristettyjen lukujen odotettu (keskimääräinen) arvo on olennaisesti sama kuin alkuperäisten lukujen arvo, vaikka kaikki jälkimmäiset olisivat positiivisia (tai negatiivisia). Tämä sääntö aiheuttaa kuitenkin edelleen positiivisen vääristymän parillisille luvuille (mukaan lukien nolla) ja negatiivisen vääristymän parittomille luvuille.

Tätä lähimpään pyöristykseen perustuvan menetelmän muunnosta kutsutaan myös nimellä unbiased rounding (epäselvästi ja hieman väärin), konvergentti pyöristys, tilastotieteilijän pyöristys, hollantilainen pyöristys, Gaussin pyöristys tai pankkiirien pyöristys. Tätä käytetään yleisesti kirjanpidossa.

Tämä on IEEE 754:n laskentafunktioissa ja operaattoreissa käytetty oletuspyöristystapa.

Pyöreä puolikas parittomaksi

Toinen tasapelinratkaisusääntö, joka on hyvin samankaltainen kuin puoliksi tasan pyöristäminen, nimittäin

  • Jos y:n murtoluku on 0,5, q on y:tä lähimpänä oleva pariton kokonaisluku.

Näin esimerkiksi +22,5 muuttuu +23:ksi, +21,5 muuttuu +21:ksi, -21,5 muuttuu -21:ksi ja -22,5 muuttuu -23:ksi.

Menetelmä käsittelee myös positiivisia ja negatiivisia arvoja symmetrisesti, joten se ei aiheuta yleistä vääristymää, jos alkuperäiset luvut ovat positiivisia tai negatiivisia yhtä suurella todennäköisyydellä. Lisäksi useimmilla järkevillä y-arvojen jakaumilla pyöristettyjen lukujen odotettu (keskimääräinen) arvo on olennaisesti sama kuin alkuperäisten lukujen arvo, vaikka kaikki jälkimmäiset olisivat positiivisia (tai negatiivisia). Tämä sääntö aiheuttaa kuitenkin edelleen negatiivisen vääristymän parillisille luvuille (mukaan lukien nolla) ja positiivisen vääristymän parittomille luvuille.

Tätä vaihtoehtoa ei käytetä juuri koskaan useimmissa laskutoimituksissa, paitsi tilanteissa, joissa halutaan välttää 0,5:n tai -0,5:n pyöristäminen nollaksi tai välttää liukulukuna esitettävien lukujen asteikon kasvattaminen (rajoitetuilla skaalauseksponentin vaihteluväleillä) siten, että muu kuin ääretön luku pyöristyy äärettömäksi tai että pieni denormaali arvo pyöristyy normaaliksi nollasta poikkeavaksi arvoksi (näitä voi esiintyä pyöristystavalla round half to even (pyöristä puolet parilliseksi)). Käytännössä tämä tila säilyttää mieluummin solmulukujen nykyisen asteikon ja välttää mahdollisuuksien mukaan alueen ulkopuolisia tuloksia.

Stokastinen pyöristys

Toinen puolueeton tasapelinratkaisumenetelmä on stokastinen pyöristys:

  • Jos y:n murtoluku on 0,5, valitse q satunnaisesti y + 0,5:n ja y - 0,5:n välillä yhtä suurella todennäköisyydellä.

Kuten pyöristäminen puolikkaasta parilliseen, tämä sääntö on periaatteessa vapaa yleisestä harhasta, mutta se on myös oikeudenmukainen parillisten ja parittomien q-arvojen välillä. Toisaalta se tuo tulokseen satunnaiskomponentin; saman laskutoimituksen suorittaminen kahdesti samoilla tiedoilla voi tuottaa kaksi erilaista tulosta. Se on myös altis tiedostamattomalle vääristymälle, jos ihmiset (eikä tietokoneet tai sattumalaitteet) päättävät "satunnaisesti", mihin suuntaan pyöristetään.

Vuorotteleva tasatulos

Yksi menetelmä, joka on epäselvempi kuin useimmat, on pyöreä puoli vuorotellen.

  • Jos murtoluku on 0,5, pyöristetään vuorotellen ylös- ja alaspäin: kun murtoluku on 0,5, pyöristetään ylöspäin, kun murtoluku on 0,5, pyöristetään alaspäin ja niin edelleen.

Tämä poistaa tuloksen satunnaiskomponentin, jos 0,5:n murto-osien esiintymät voidaan numeroida tehokkaasti. Se voi kuitenkin aiheuttaa positiivista tai negatiivista vääristymää sen mukaan, mikä on ensimmäiselle esiintymälle määritetty pyöristyssuunta, jos esiintymien kokonaismäärä on pariton.


 

Yksinkertainen dithering

Joissakin tilanteissa kaikki edellä mainitut pyöristysmenetelmät eivät välttämättä ole tyydyttäviä. Oletetaan esimerkiksi, että y on äänisignaalin tarkka mittaus, joka pyöristetään kokonaislukuun q tallennus- tai siirtokustannusten vähentämiseksi. Jos y muuttuu hitaasti ajan myötä, mikä tahansa edellä esitetyistä pyöristysmenetelmistä johtaa siihen, että q on täysin vakio pitkien aikavälien ajan, joiden välissä on äkillisiä ±1:n hyppäyksiä. Kun q-signaalia toistetaan, nämä askeleet kuullaan erittäin epämiellyttävänä kohinana, ja kaikki alkuperäisen signaalin vaihtelut kahden kokonaisluvun välillä häviävät kokonaan.

Yksi tapa välttää tämä ongelma on pyöristää jokainen arvo y ylöspäin todennäköisyydellä, joka on yhtä suuri kuin sen murtoluku, ja pyöristää se alaspäin kyseisen todennäköisyyden komplementilla. Esimerkiksi luku 23,17 pyöristetään ylöspäin arvoon 24 todennäköisyydellä 0,17 ja alaspäin arvoon 23 todennäköisyydellä 1 - 0,17 = 0,83. (Tämä vastaa pyöristämistä alaspäin y + s, jossa s on satunnaisluku, joka on tasaisesti jakautunut 0:n ja 1:n välille). Tällä erityisellä pyöristyksellä, joka tunnetaan nimellä dithering, äkilliset askeleet korvataan vähemmän häiritsevällä kohinalla, ja jopa pienet vaihtelut alkuperäisessä signaalissa säilyvät jossain määrin. Kuten stokastinen lähestymistapa tasapelin katkaisuun, myös pyöristäminen ei ole puolueellista: jos kaikki murtoluvut ovat yhtä todennäköisiä, pyöristäminen ylöspäin tietyllä määrällä on yhtä todennäköistä kuin pyöristäminen alaspäin samalla määrällä; sama pätee myös useiden pyöristettyjen lukujen summaan. Toisaalta dithering tuo tulokseen satunnaiskomponentin, joka on paljon suurempi kuin stokastisessa tasatuloksen ratkaisussa.

Tarkemmin sanottuna jokaisen pyöristysvirhe on tasaisesti jakautunut satunnaismuuttuja, jonka keskiarvo on nolla, mutta keskihajonta {\displaystyle 1/{\sqrt {12}}\approx 0.2886}, mikä on parempi kuin 1/2 keskihajonta yksinkertaisilla ennustamismenetelmillä, mutta hieman suurempi kuin yksinkertaisemmalla stokastisella menetelmällä. N pyöristetyn luvun summa on kuitenkin satunnaismuuttuja, jonka odotusvirhe on nolla, mutta jonka keskihajonta {\displaystyle {\sqrt {n}}/{\sqrt {12}}} (jäljelle jäävä kokonaiskohina) poikkeaa puolikvadratisesti ja voi tulla helposti havaittavaksi, vaikka näytekohtaisen pyöristysvirheen keskihajonta on {\displaystyle 1/{\sqrt {12n}}} , joka hitaasti konvergoi puolikvadratisesti nollaan. Tämä satunnaisjakauma voi siis silti olla liian suuri joissakin sovelluksissa, joissa pyöristetään paljon dataa.


 

Moniulotteinen värähtely

Tämä yksinkertaisen dithering-menetelmän muunnos pyöristää edelleen arvot todennäköisyydellä, joka on yhtä suuri kuin sen murto-osa. Sen sijaan, että yksittäisten näytteiden pyöristämiseen käytettäisiin satunnaisjakaumaa, kussakin pyöristetyssä näytteessä esiintyvä pyöristysvirhe lasketaan yhteen seuraavien ympäröivien näytteenotto- tai laskentaelementtien osalta; tämä kertynyt arvo lisätään sitten näiden seuraavaksi pyöristettävien näytteenotto- tai laskenta-arvojen arvoon niin, että muutetuissa arvoissa otetaan huomioon tämä erotus käyttämällä ennakoivaa mallia (kuten Floyd-Steinbergin pyöristystä).

Muutetut arvot pyöristetään sitten millä tahansa edellä mainituista pyöristysmenetelmistä, joista parhaita ovat stokastiset tai dithering-menetelmät: viimeksi mainitussa tapauksessa n pyöristetyn luvun summa on edelleen satunnaismuuttuja, jonka odotusvirhe on nolla, mutta jonka erinomainen vakioinen keskihajonta on {\displaystyle 1/{\sqrt {12}}}sen sijaan, että se divergoisi puolihypertasaisesti, kun yksittäisiä näytteitä erotellaan; ja pyöristysvirheen kokonaiskeskiarvopoikkeama pyöristettyä näytettä kohti on {\displaystyle 1/(n{\sqrt {12}})} joka konvergoi hyperbolisesti nollaan, nopeammin kuin puolihypertasaisella konvergenssilla, kun yksittäisiä näytteitä erotellaan.

Käytännössä pyöristettäessä suuria näytteenottoaineistoja (kuten ääni-, kuva- ja videorenderöinnissä) pyöristysvirheiden kertymistä käytetään useimmiten muunnettujen arvojen yksinkertaisella ennakoivalla pyöristämisellä (kuten pyöristämisellä kohti nollaa), koska tällöin säilytetään edelleen pyöristysvirheiden kokonaiskeskiarvon ja keskihajonnan hyperbolinen konvergenssi kohti nollaa. Tätä parannusta käytetään usein kuvan- ja äänenkäsittelyssä (erityisesti tarkassa skaalaus- ja tasoitusoperaatioissa, joissa yksittäisten arvojen yksinkertainen todennäköinen pyöristäminen voi edelleen tuottaa havaittavaa kohinaa, joskus jopa pahempaa kuin moiré-ilmiöt, joita syntyy, kun yksittäisiin näytteisiin sovelletaan yksinkertaisia, ei-epätodennäköisiä pyöristysmenetelmiä).

Kertyneiden pyöristysvirheiden tehokas eteneminen voi riippua pyöristettävän näytteenottotiedon diskreetistä ulottuvuudesta: kun näytteistetään kaksiulotteisia kuvia, mukaan lukien värilliset kuvat (jotka lisäävät väritasojen diskreetin ulottuvuuden), tai kolmiulotteisia videoita (jotka lisäävät diskreetin aikaulottuvuuden), tai moniäänistä audiodataa (käyttäen ajan ja kanavan diskreettejä ulottuvuuksia), voi silti olla parempi eteneminen tähän virheeseen haluttuun suuntaan, tai tasaisesti useisiin ortogonaalisiin ulottuvuuksiin, kuten pystysuoraan vs. pystysuoraan. vaakasuunnassa kaksiulotteisissa kuvissa, tai rinnakkaisiin värikanaviin samassa paikassa ja/tai aikaleimalla ja riippuen näiden ortogonaalisten erillisten ulottuvuuksien muista ominaisuuksista (havaintomallin mukaan). Näissä tapauksissa voidaan käyttää useita pyöristysvirheakkuja (vähintään yksi kutakin diskreettia ulottuvuutta varten) tai (n-1)-ulotteista akkuvektoria (tai -matriisia).

Joissakin näistä tapauksista näytteenotto- ja pyöristysdatan erillisiä ulottuvuuksia voidaan käsitellä epäortogonaalisesti: Esimerkiksi värikuvien kanssa työskenneltäessä kolmiväritasojen tiedot kussakin fyysisessä ulottuvuudessa (korkeus, leveys ja valinnaisesti aika) voidaan kartoittaa uudelleen käyttämällä havaintovärimallia, jolloin pyöristysvirheiden kertymät suunnitellaan säilyttämään vaaleus suuremmalla todennäköisyydellä kuin värisävy tai värikylläisyys sen sijaan, että virheet levitettäisiin jokaiseen ortogonaaliseen väritasoon itsenäisesti; ja stereofonisessa äänidatassa kaksi pyöristettyä datakanavaa (vasen ja oikea) voidaan pyöristää yhdessä, jotta niiden keskiarvo säilyy ensisijaisena niiden efektiiviseen eroon nähden, joka absorboi suurimman osan jäljelle jäävistä pyöristysvirheistä tasapainoisesti nollan ympärillä.


 

Pyöristäminen yksinkertaisiin murtolukuihin

Joissakin yhteyksissä on toivottavaa pyöristää tietty luku x "siistiksi" murtoluvuksi eli lähimmäksi murtoluvuksi z = m/n, jonka osoittaja m ja nimittäjä n eivät ylitä tiettyä enimmäismäärää. Tämä ongelma eroaa melko selvästi siitä, kun arvo pyöristetään kiinteään desimaali- tai binäärinumeroon tai tietyn yksikön m moninkertaiseksi. Tämä ongelma liittyy Fareyn sarjoihin, Stern-Brocotin puuhun ja jatkettuihin murtolukuihin.


 

Skaalattu pyöristys

Tämä pyöristystapa, jota kutsutaan myös logaritmiseksi pyöristykseksi, on muunnelma pyöristyksestä tiettyyn inkrementtiin, mutta sen inkrementti muuttuu tuloksen asteikon ja suuruuden mukaan. Tarkoituksena on rajoittaa merkitsevien numeroiden määrää pyöristämällä arvo siten, että merkitsemättömät numerot jätetään pois. Tällainen pyöristys tapahtuu epäsuorasti lukujen kanssa, jotka on laskettu liukulukuarvoilla, joiden tarkkuus on rajoitettu (kuten IEEE-754 float- ja double-tyypit), mutta sitä voidaan käyttää yleisemmin pyöristämään mitä tahansa reaaliarvoja, joilla on mikä tahansa positiivinen määrä merkitseviä numeroita ja mikä tahansa tiukasti positiivinen reaalinen perusta.

Sitä voidaan käyttää esimerkiksi teknisessä grafiikassa tietojen esittämiseen logaritmisella asteikolla, jossa on muuttuvia askeleita (esimerkiksi aallonpituudet, joiden perusta ei välttämättä ole kokonaisluku), tai tilastollisissa tiedoissa reaalisten arvojen luokkien määrittelemiseen eksponentiaalisesti kasvavien intervallien sisällä (mutta yleisimmin sitä käytetään kokonaislukujen, kuten 10 tai 2, kanssa).

Tämän tyyppinen pyöristys perustuu logaritmiseen asteikkoon, joka määritellään kiinteällä nollasta poikkeavalla reaalisella skaalauskertoimella s (useimmiten tämä kerroin on s=1) ja kiinteällä positiivisella perusluvulla b>1 (joka ei välttämättä ole kokonaisluku ja joka useimmiten eroaa skaalauskertoimesta) sekä kiinteällä kokonaisluvulla n>0 merkitsevien numeroiden määrästä kyseisessä perusluvussa (joka määrittää pyöristyksessä käytettävän lisäyksen arvon sekä pyöristetyn luvun laskennallisen efektiivisen asteikon).

Ensisijainen argumenttiluku (samoin kuin tuloksena saatu pyöristetty luku) esitetään ensin eksponenttimerkinnällä x = s-a-m-bc , jolloin merkki s on joko +1 tai -1, absoluuttinen mantissa a on rajoitettu puoliksi avoimeen positiiviseen väliin [1/b,1] ja eksponentti c on mikä tahansa (positiivinen tai negatiivinen) kokonaisluku. Tässä esityksessä kaikki merkitsevät numerot ovat absoluuttisen mantissan murto-osassa, jonka kokonaislukuosa on aina nolla.

Jos lähdeluku (tai pyöristetty luku) on 0, absoluuttinen mantissa a määritellään arvoksi 0, eksponentti c vahvistetaan mielivaltaiseen arvoon (0 useimmissa konventioissa, mutta joissakin liukulukumuotoisissa esitystavoissa ei voida käyttää nollaa absoluuttista mantissaa, vaan eksponentille c varataan tietty negatiivinen enimmäisarvo, joka edustaa itse lukua 0), ja merkki s voidaan valita mielivaltaisesti -1 tai +1 välillä (yleensä se asetetaan +1:ksi yksinkertaiselle nollalle, tai se asetetaan samaan merkkiin kuin argumentti pyöristettynä arvona, jos lukujen esitys sallii positiivisten ja negatiivisten nollien erottamisen toisistaan, vaikka ne edustaisivatkin lopulta samaa numeerista arvoa 0).

Vastaavasti voidaan käyttää myös skaalattua eksponentiaaliesitystä x = a-s-bc , jolloin merkillinen mantissa a on joko nolla tai jommallakummalla puoliavoimella alueella (-1,-1/b] ja [+1/b,+1]), ja näin toimitaan seuraavassa algoritmissa.

Vaiheet, joilla tämä skaalattu pyöristys lasketaan, ovat yleensä samanlaiset kuin seuraavassa:

  1. jos x on nolla, palauta x; muutoin:
  2. muuntaa x:n skaalattuun eksponentiaaliseen esitykseen, jossa on merkkipaalu (mantissa):
    {\displaystyle x=a\cdot s\cdot b^{c}\,}
    1. Olkoon x' x:n skaalaamaton arvo jakamalla se skaalauskertoimella s:
      {\displaystyle x'=x/s\,}
    2. Olkoon skaalauseksponentti c yksi plus x':n absoluuttisen arvon base-b-logaritmi pyöristettynä kokonaislukuun (kohti ääretöntä):
      {\displaystyle c=1+\left\lfloor \log _{b}\left|x'\right|\right\rfloor =1+\left\lfloor \log _{b}\left|x/s\right|\right\rfloor \,} ;
    3. Olkoon merkillinen mantissa a jaetun x':n ja b:n tulo potenssiin c:
      {\displaystyle a=x'\cdot b^{-c}=x/s\cdot b^{-c}\,}
  3. laske pyöristetty arvo tässä esityksessä:
    1. Olkoon c' x':n alkuperäinen skaalauseksponentti c:
      {\displaystyle c'=c\,}
    2. Olkoon m mantissan a pyöristyksen lisäys sen mukaan, kuinka monta merkitsevää numeroa halutaan säilyttää:
      {\displaystyle m=b^{-n}\,}
    3. Olkoon a' merkillinen mantissa a pyöristettynä tämän inkrementin m ja valitun pyöristystavan mukaisesti:
      {\displaystyle a'=\mathrm {round} (a,m)=\mathrm {round} (x/s\cdot b^{n-c'})\cdot b^{-n}\,}
    4. jos a':n absoluuttinen arvo ei ole pienempi kuin b, vähennetään n (kerrotaan inkrementti m:llä b:llä), kasvatetaan skaalauseksponenttia c', jaetaan merkityn mantissan a b:llä ja aloitetaan uuden merkityn mantissan a pyöristäminen uudelleen a':ksi samalla kaavalla; tämä vaihe voidaan välttää vain, jos abtract "round()" -funktio pyöristää a:n aina 0:n suuntaan (i.eli kun kyseessä on yksinkertainen katkaisu), mutta se on välttämätöntä, jos se saattaa pyöristää a:n äärettömään, koska pyöristetyllä mantissalla voi tällöin olla suurempi skaalauseksponentti, jolloin tarkkuuteen jää ylimääräinen numero.
  4. palauttaa pyöristetyn arvon:
    {\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}\,} .

Abstraktissa "round()-funktiossa tämä pyöristystapa voi käyttää mitä tahansa seuraavassa luvussa tarkemmin kuvatuista kokonaislukujen pyöristystavoista, mutta useimmiten se on pyöristystapa lähimpään (ja tasatuloksen ratkaisusääntöjä kuvataan tarkemmin jäljempänä).

Esimerkiksi:

  • Kun käytetään mitä tahansa lähimpään pyöristystapaa, 1.234:n skaalattu pyöristys, jossa on skaalauskerroin 1 10:n perustassa ja 3 merkitsevää numeroa (suurin suhteellinen tarkkuus = 1/1000), saadaan tulokseksi 1.23;
  • samanlainen skaalattu pyöristys 1,236:sta antaa tulokseksi 1,24;
  • samanlainen 21.236:n skaalattu pyöristäminen antaa tulokseksi 21.2;
  • samanlainen 321,236:n skaalattu pyöristys palauttaa 321;
  • Kun käytetään alaspäin pyöristystapaa, 1.234:n skaalattu pyöristys skaalauskertoimella 1 10:n perustassa ja 3 merkitsevällä numerolla (suurin suhteellinen tarkkuus = 1/1000) antaa tulokseksi 1.23;
  • samanlainen skaalattu pyöristys 1,236:sta antaa myös tulokseksi 1,23;
  • skaalattu pyöristys {\displaystyle \scriptstyle 3\pi /7\;\approx \;6.8571\cdot \pi \cdot 2^{-4}} skaalauskertoimella {\displaystyle \scriptstyle \pi } perustassa 2 ja 3 merkitsevää numeroa (suurin suhteellinen tarkkuus = 1/8), kun käytetään alaspäin pyöristystapaa, saadaan tulokseksi {\displaystyle \scriptstyle 6\cdot \pi \cdot 2^{-4}\;=\;3\pi /8} ;
  • samanlainen skaalattu pyöristys {\displaystyle \scriptstyle 5\pi /7\;\approx \;5.7143\cdot \pi \cdot 2^{-3}} palauttaa {\displaystyle \scriptstyle 5\cdot \pi \cdot 2^{-3}\;=\;5\pi /8} ;
  • vastaava skaalattu pyöristys {\displaystyle \scriptstyle \pi /7\;\approx \;4.5714\cdot \pi \cdot 2^{-5}} palauttaa {\displaystyle \scriptstyle 4\cdot \pi \cdot 2^{-5}\;=\;\pi /8} .
  • Vastaava skaalattu pyöristys {\displaystyle \scriptstyle \pi /8\;=\;4\cdot \pi \cdot 2^{-5}} antaa myös tulokseksi {\displaystyle \scriptstyle 4\cdot \pi \cdot 2^{-5}\;=\;\pi /8} .
  • vastaava skaalattu pyöristys {\displaystyle \scriptstyle \pi /15\;\approx \;4.2667\cdot \pi \cdot 2^{-6}} palauttaa {\displaystyle \scriptstyle 4\cdot \pi \cdot 2^{-6}\;=\;\pi /16}.

 

Pyöristetään käytettävissä olevaan arvoon

Valmis sahatavara, kirjoituspaperi, kondensaattorit ja monet muut tuotteet myydään yleensä vain muutamassa vakiokokoluokassa.

Monissa suunnittelumenetelmissä kuvataan, miten likimääräinen arvo lasketaan ja sitten "pyöristetään" johonkin vakiokokoon käyttämällä lauseita kuten "pyöristetään alaspäin lähimpään vakioarvoon", "pyöristetään ylöspäin lähimpään vakioarvoon" tai "pyöristetään lähimpään vakioarvoon".

Kun haluttujen arvojen joukko on tasaisin välein logaritmisella asteikolla, tiettyä arvoa lähimmän halutun arvon valitseminen voidaan nähdä eräänlaisena skaalattuna pyöristyksenä. Tällaiset "pyöristetyt" arvot voidaan laskea suoraan.


 

Liukulukujen pyöristys

Liukulukuaritmiikassa pyöristämisen tarkoituksena on muuttaa annettu arvo x arvoksi z, jolla on tietty määrä merkitseviä numeroita. Toisin sanoen z:n pitäisi olla sellaisen luvun m kerrannainen, joka riippuu z:n suuruudesta. Luku m on potenssi liukulukumuodon perusluvusta (yleensä 2 tai 10).

Tätä yksityiskohtaa lukuun ottamatta kaikki edellä käsitellyt pyöristämisen muunnelmat pätevät myös liukulukujen pyöristämiseen. Tällaisen pyöristyksen algoritmi on esitetty edellä kohdassa Skaalattu pyöristäminen, mutta vakioskaalauskertoimen s=1 ja kokonaislukualustan b>1 kanssa.

Tuloksissa, joissa pyöristetty tulos olisi ylivuotava, tulos on pyöristyksen suunnasta riippuen joko sopiva merkillinen ääretön luku tai suurin esitettävä positiivinen äärellinen luku (tai pienin esitettävä negatiivinen äärellinen luku, jos x on negatiivinen). Tavallisessa tapauksessa, jossa pyöristetään parilliseksi, ylivuodon tulos on aina sopiva ääretön.

Lisäksi, jos pyöristetty tulos alittaisi virran, ts. jos eksponentti ylittäisi pienimmän esitettävissä olevan kokonaisluvun arvon, efektiivinen tulos voi olla joko nolla (mahdollisesti merkkipitoinen, jos esitystavassa voidaan pitää yllä nollien merkkien erottelua) tai pienin esitettävissä oleva positiivinen äärellinen luku (tai suurin esitettävissä oleva negatiivinen äärellinen luku, jos x on negatiivinen), mahdollisesti denormaali positiivinen tai negatiivinen luku (jos mantissa tallentaa kaikki merkitsevät numerot, jolloin merkitsevin numero voidaan edelleen tallentaa alempaan asemaan asettamalla korkeimmat tallennetut numerot nollaksi, ja tämä tallennettu mantissa ei pudota merkitsevintä numeroa, mikä on mahdollista, kun perusta b=2, koska merkitsevin numero on aina 1 kyseisessä perusluvussa), riippuen pyöristyksen suunnasta. Tavallisessa tapauksessa, jossa pyöristetään parilliseksi, alivuodon tulos on aina sopiva nolla.


 

Kaksinkertainen pyöristys

Luvun pyöristäminen kahdesti peräkkäin eri tarkkuuteen, jolloin jälkimmäinen tarkkuus on karkeampi, ei taatusti anna samaa tulosta kuin pyöristäminen kerran lopulliseen tarkkuuteen, paitsi jos kyseessä on suunnattu pyöristys. Esimerkiksi pyöristämällä 9,46 yhden desimaalin tarkkuuteen saadaan 9,5 ja sitten 10, kun pyöristetään kokonaislukuun käyttämällä pyöristystä puoliksi parilliseen, mutta kun pyöristetään suoraan kokonaislukuun, saadaan tulokseksi 9 .

Joissakin tietokonekielissä ja IEEE 754-2008 -standardissa määrätään, että suoraviivaisissa laskutoimituksissa tulosta ei saa pyöristää kahteen kertaan. Tämä on ollut erityinen ongelma Javassa, koska se on suunniteltu siten, että sitä voidaan käyttää identtisesti eri koneilla. Tämän saavuttamiseksi on jouduttu käyttämään erityisiä ohjelmointikikkoja x87-liukulukujen kanssa. Javan kieltä muutettiin siten, että se sallii erilaiset tulokset silloin, kun erolla ei ole merkitystä, ja vaatii "strictfp"-ominaisuutta käytettäväksi silloin, kun tulosten on vastattava tarkasti toisiaan.


 

Tarkka laskenta pyöristetyllä aritmeettisella laskutoimituksella

On mahdollista käyttää pyöristettyä aritmetiikkaa sellaisen funktion tarkan arvon arvioimiseksi, jolla on diskreetti alue ja alue. Jos esimerkiksi tiedämme, että kokonaisluku n on täydellinen neliö, voimme laskea sen neliöjuuren muuntamalla n liukulukuarvoksi x, laskemalla likimääräisen neliöjuuren y x:stä liukulukuluvulla ja pyöristämällä y lähimpään kokonaislukuun q. Jos n ei ole liian suuri, liukuluvun pyöristysvirhe y:ssä on alle 0,5, joten pyöristetty arvo q on tarkka neliöjuuri n:stä. Nykyaikaisissa tietokoneissa tämä menetelmä voi olla paljon nopeampi kuin neliöjuuren laskeminen n:stä kaikki kokonaisluvut sisältävällä algoritmilla.


 

Pöydänvalmistajan dilemma

William Kahan keksi termin "The Table-Maker's Dilemma" transsendentaalifunktioiden pyöristämisen tuntemattomista kustannuksista:

"Kukaan ei tiedä, kuinka paljon maksaisi laskea y^w oikein pyöristettynä jokaista kahta liukulukuargumenttia kohden, joiden kohdalla se ei yli-/alivirtaa. Sen sijaan hyvämaineiset matematiikkakirjastot laskevat alkeistranssendenttifunktiot useimmiten hieman yli puolen ulp:n sisällä ja lähes aina hyvin yhden ulp:n sisällä. Miksi Y^W:tä ei voida pyöristää puolen ulpin sisällä kuten SQRT:tä? Koska kukaan ei tiedä, kuinka paljon laskentaa se maksaisi... Ei ole olemassa mitään yleistä tapaa ennustaa, kuinka monta ylimääräistä numeroa täytyy kuljettaa transsendentaalisen lausekkeen laskemiseksi ja pyöristämiseksi oikein johonkin ennalta määrättyyn numeromäärään. Jopa se tosiasia (jos se on totta), että äärellinen määrä lisänumeroita lopulta riittää, voi olla syvällinen teoreema.""

IEEE:n liukulukustandardi takaa, että yhteenlasku, vähennyslasku, kertolasku, jakolasku, neliöjuuri ja liukulukujäännös antavat oikein pyöristetyn tuloksen äärettömän tarkkuuden operaatiosta. Tällaista takuuta ei kuitenkaan anneta monimutkaisemmille funktioille, ja ne ovat tyypillisesti tarkkoja korkeintaan viimeisen bitin tarkkuudella.

Gelfond-Schneiderin lauseen ja Lindemann-Weierstrassin lauseen avulla voidaan todistaa, että monet tavallisista alkeisfunktioista tuottavat transsendentaalisia tuloksia, kun niille annetaan rationaalisia nollasta poikkeavia argumentteja; näin ollen tällaiset funktiot on aina mahdollista pyöristää oikein. Tietyn tarkkuuden rajan määrittäminen sille, kuinka tarkkoja tuloksia on laskettava, ennen kuin voidaan taata oikein pyöristetty tulos, voi kuitenkin vaatia paljon laskenta-aikaa.

Nykyään on olemassa joitakin paketteja, jotka tarjoavat täyden tarkkuuden. MPFR-paketti antaa oikein pyöristettyjä mielivaltaisen tarkkuuden tuloksia. IBM on kirjoittanut paketin nopeita ja tarkkoja IEEE-alkuisia funktioita varten, ja tulevaisuudessa standardikirjastot saattavat tarjota tällaista tarkkuutta.

On mahdollista keksiä hyvin määriteltyjä laskettavia lukuja, joita ei ehkä koskaan pystytä pyöristämään oikein, vaikka laskettaisiin kuinka monta numeroa. Jos esimerkiksi Goldbachin arvelu on totta, mutta sitä ei voida todistaa, on mahdotonta pyöristää oikein alaspäin 0,5 + 10-n missä n on ensimmäinen parillinen luku, joka on suurempi kuin 4 ja joka ei ole kahden alkuluvun summa, tai 0,5, jos tällaista lukua ei ole. Tämä voidaan kuitenkin approksimoida millä tahansa tarkkuudella, vaikka olettamus olisi todistamaton.


 

Historia

Pyöristämisen käsite on hyvin vanha, ehkä jopa vanhempi kuin jakamisen käsite. Joissakin Mesopotamiasta löydetyissä muinaisissa savitauluissa on taulukoita, joissa on pyöristettyjä käänteislukuja ja neliöjuuria 60:n perusluvulla. Myös π:n, vuoden pituuden ja kuukauden pituuden pyöristetyt likiarvot ovat muinaisia.

Round-to-even-menetelmä on toiminut ASTM:n (E-29) standardina vuodesta 1940 lähtien. Termien "puolueeton pyöristys" ja "tilastotieteilijän pyöristys" alkuperä on melko itsestään selvä. Vuonna 1906 ilmestyneessä Probability and Theory of Errors -teoksen neljännessä painoksessa Robert Simpson Woodward kutsui tätä "tietokoneen säännöksi", mikä osoittaa, että se oli tuolloin yleisesti käytössä matemaattisia taulukoita laskevilla ihmistietokoneilla. Churchill Eisenhartin vuonna 1947 julkaisemassa artikkelissa "Effects of Rounding or Grouping Data" (teoksessa Selected Techniques of Statistical Analysis, McGrawHill, 1947, Eisenhart, Hastay ja Wallis, toimittajat) todettiin, että käytäntö oli jo "vakiintunut" tietojen analysoinnissa.

Termi "pankkiirien pyöristys" on edelleen hämärämpi. Jos tämä pyöristysmenetelmä on joskus ollut pankkitoiminnassa standardi, todisteita on erittäin vaikea löytää. Päinvastoin, Euroopan komission kertomuksen The Introduction of the Euro and the Rounding of Currency Amounts (Euron käyttöönotto ja rahamäärien pyöristäminen) 2 jaksossa todetaan, että pankkitoiminnassa ei ole aiemmin ollut vakiintunutta pyöristyskäytäntöä, ja siinä täsmennetään, että "puolittaiset" summat olisi pyöristettävä ylöspäin.

1980-luvulle asti tietokoneiden liukulukulaskennassa käytetty pyöristysmenetelmä oli yleensä laitteistokohtainen, huonosti dokumentoitu, epäjohdonmukainen ja erilainen jokaisella tietokonemerkillä ja -mallilla. Tilanne muuttui sen jälkeen, kun useimmat tietokonevalmistajat ottivat käyttöön IEEE 754 -liukulukustandardin. Standardi antaa käyttäjälle mahdollisuuden valita useista pyöristystavoista ja määrittää kussakin tapauksessa tarkasti, miten tulokset pyöristetään. Nämä ominaisuudet tekivät numeerisista laskutoimituksista ennustettavampia ja koneesta riippumattomampia ja mahdollistivat intervalliaritmetiikan tehokkaan ja johdonmukaisen toteuttamisen.


 

Pyöristysfunktiot ohjelmointikielissä

Useimmat ohjelmointikielet tarjoavat funktioita tai erityistä syntaksia murtolukujen pyöristämiseen eri tavoin. Varhaisimmat numerokielet, kuten FORTRAN ja C, tarjosivat vain yhden menetelmän, yleensä typistämisen (kohti nollaa). Tätä oletusmenetelmää voitiin käyttää tietyissä yhteyksissä, esimerkiksi kun murtolukua osoitettiin kokonaislukumuuttujalle tai kun murtolukua käytettiin joukon indeksinä. Muut pyöristystavat oli ohjelmoitava erikseen; esimerkiksi positiivisen luvun pyöristäminen lähimpään kokonaislukuun voitiin toteuttaa lisäämällä 0,5 ja katkaisemalla.

Viime vuosikymmeninä useimpien kielten syntaksissa ja/tai standardikirjastoissa on kuitenkin yleisesti ottaen ollut ainakin neljä pyöristyksen perustoimintoa (ylös/kattoon, alas/lattialle, lähimpään ja kohti nollaa). Tasapisteiden katkaisumenetelmä voi vaihdella kielestä ja versiosta riippuen ja/tai olla ohjelmoijan valittavissa. Useat kielet noudattavat IEEE-754:n liukulukustandardia ja määrittelevät nämä funktiot siten, että ne ottavat kaksoistarkkuuden liukulukuargumentin ja palauttavat samantyyppisen tuloksen, joka voidaan tarvittaessa muuntaa kokonaisluvuksi. Koska IEEE:n kaksoistarkkuusformaatissa on 52 murtoviivaa, tällä lähestymistavalla voidaan välttää virheelliset ylivuodot kielissä, joissa on 32-bittisiä kokonaislukuja. Joissakin kielissä, kuten PHP:ssä, on funktioita, jotka pyöristävät arvon tiettyyn desimaalilukuun, esimerkiksi 4321,5678:sta 4321,57:ään tai 4300:aan. Lisäksi monet kielet tarjoavat "printf"- tai vastaavan merkkijonomuotoilufunktion, jonka avulla voidaan muuntaa murtoluku merkkijonoksi, joka pyöristetään käyttäjän määrittelemään desimaalilukuun (tarkkuus). Toisaalta typistäminen (pyöristäminen nollaan) on edelleen monien kielten käyttämä oletuspyöristysmenetelmä, erityisesti kahden kokonaisluvun jakamisessa.

Sitä vastoin CSS ja SVG eivät määrittele mitään erityistä enimmäistarkkuutta luvuille ja mittauksille, joita käsitellään ja esitetään niiden dokumenttiobjektimallissa ja rajapintakuvauskielen rajapinnassa merkkijonoina ikään kuin niillä olisi ääretön tarkkuus, eivätkä ne tee eroa kokonaislukujen ja liukulukuarvojen välillä; näiden kielten toteutukset kuitenkin yleensä muuttavat nämä luvut IEEE-754:n kaksinkertaisiksi liukuluvuiksi, ennen kuin ne esittävät lasketut numerot rajoitetulla tarkkuudella (erityisesti tavallisissa Javascript- tai ECMAScript-rajapintasidoksissa).


 

Muut pyöristysstandardit

Jotkin tieteenalat tai laitokset ovat antaneet pyöristämistä koskevia standardeja tai ohjeita.

Yhdysvaltain säähavainnot

Vuoden 1966 puolivälissä julkaistussa ohjeessa Yhdysvaltain liittovaltion meteorologian koordinaattorin toimisto (Office of the Federal Coordinator for Meteorology) määritteli, että säätiedot olisi pyöristettävä lähimpään pyöreään numeroon ja että tasapisteissä olisi noudatettava sääntöä "pyöristetään puolet ylöspäin". Esimerkiksi kokonaisluvuksi pyöristetyn 1,5:n pitäisi olla 2 ja -1,5:n pitäisi olla -1. Ennen kyseistä päivämäärää tasapelin ratkaisusääntö oli "pyöristetään puolet poispäin nollasta".

Negatiivinen nolla meteorologiassa

Jotkut meteorologit saattavat kirjoittaa "-0" osoittaakseen 0,0 ja -0,5 asteen välistä lämpötilaa (yksinoikeus), joka on pyöristetty kokonaislukuun. Tätä merkintätapaa käytetään, kun negatiivista merkkiä pidetään tärkeänä riippumatta siitä, kuinka pieni arvo on; esimerkiksi pyöristettäessä lämpötiloja Celsius-asteikolla, jossa nollan alapuolella oleva arvo tarkoittaa jäätymistä.


 

Aiheeseen liittyvät sivut

 

Kysymyksiä ja vastauksia

K: Mitä tarkoittaa sana "pyöristäminen"?


A: Pyöristäminen tarkoittaa lukuarvon korvaamista toisella arvolla, joka on suunnilleen sama mutta jonka muoto on lyhyempi, yksinkertaisempi tai selvempi.

K: Mikä on esimerkki pyöristämisestä?


V: Esimerkki pyöristämisestä on 23,74 Yhdysvaltain dollarin pyöristäminen 24 dollariksi, murtoluvun 312/937 pyöristäminen 1/3:ksi ja lausekkeen 2 {\displaystyle {\sqrt {2}} pyöristäminen 1,41:ksi.

Q: Miksi pyöristämme lukuja?


V: Pyöristämme lukuja saadaksemme arvon, joka on helpompi kirjoittaa ja käsitellä kuin alkuperäinen arvo. Pyöristäminen voidaan tehdä myös lasketun luvun tarkkuuden osoittamiseksi.

K: Mitä pyöristämiseen liittyviä mahdollisia ongelmia on?


V: Pyöristäminen voi aiheuttaa jonkin verran pyöristysvirheitä, ja tietyissä tapauksissa se voi tehdä tuloksesta merkityksettömän, koska laskutoimituksissa kertyy ajan mittaan virheitä. Lisäksi transsendentaalisten matemaattisten funktioiden tarkka pyöristäminen voi olla vaikeaa, koska ei ole mahdollista tietää, kuinka monta ylimääräistä numeroa on laskettava, jotta voidaan etukäteen päättää, pyöristetäänkö ylös- vai alaspäin.

K: Miten pyöristäminen liittyy kvantisointiin?


V: Pyöristämisellä on monia yhtäläisyyksiä kvantisointiin, joka tapahtuu silloin, kun fysikaaliset suureet on koodattava numeroilla tai digitaalisilla signaaleilla.

AlegsaOnline.com - 2020 / 2023 - License CC3