Arrotondamento

La parola "arrotondamento" per un valore numerico significa sostituirlo con un altro valore approssimativamente uguale ma con una forma più breve, più semplice o più esplicita. Per esempio, 23,74 US$ potrebbe essere arrotondato a 24 US$, o la frazione 312/937 potrebbe essere arrotondata a 1/3, o l'espressione 2 {\sqrt {\sqrt {2}}} {\displaystyle {\sqrt {2}}}come 1,41.

L'arrotondamento è spesso fatto apposta per ottenere un valore più facile da scrivere e da gestire rispetto all'originale. Può essere fatto anche per indicare l'accuratezza di un numero calcolato; per esempio, una quantità che è stata calcolata come 123.456 ma che è nota per essere accurata solo entro poche centinaia di unità è meglio indicata come "circa 123.500".

D'altra parte, l'arrotondamento può introdurre qualche errore di arrotondamento nel risultato. L'arrotondamento è quasi inevitabile in molti calcoli, specialmente quando si dividono due numeri in numeri interi o in aritmetica a punto fisso; quando si calcolano funzioni matematiche come radici quadrate, logaritmi e seni; o quando si usa una rappresentazione a virgola mobile con un numero fisso di cifre significative. In una sequenza di calcoli, questi errori di arrotondamento si accumulano generalmente e, in alcuni casi "mal condizionati", possono rendere il risultato privo di significato.

L'arrotondamento accurato delle funzioni matematiche trascendentali è difficile perché non è possibile conoscere in anticipo il numero di cifre supplementari che devono essere calcolate per decidere se arrotondare verso l'alto o verso il basso. Questo problema è noto come "il dilemma del table-maker" (qui sotto).

L'arrotondamento ha molte analogie con la quantizzazione che avviene quando le grandezze fisiche devono essere codificate da numeri o segnali digitali.

Tipi di arrotondamento

I tipici problemi di arrotondamento sono:

  • approssimando un numero irrazionale di una frazione, ad esempio π di 22/7;
  • approssimando una frazione con espansione decimale periodica di una frazione decimale finita, ad esempio 5/3 per 1,6667;
  • sostituire un numero razionale con una frazione con un numeratore e un denominatore più piccolo, ad esempio 3122/9417 per 1/3;
  • sostituendo un numero decimale frazionario con una cifra con meno cifre, ad esempio 2,1784 dollari con 2,18 dollari;
  • sostituire un numero intero decimale con un numero intero con più zeri finali, ad esempio 23.217 persone per 23.200 persone; o, in generale,
  • sostituire un valore con un multiplo di un determinato importo, ad es. 27,2 secondi per 30 secondi (un multiplo di 15).

Arrotondamento ad un incremento specificato

Il tipo più comune di arrotondamento è l'arrotondamento ad un intero; o, più in generale, ad un multiplo intero di qualche incremento - come l'arrotondamento a interi decimi di secondo, centesimi di dollaro, a interi multipli di 1/2 o 1/8 di pollice, a intere decine o migliaia, ecc.

In generale, l'arrotondamento di un numero x ad un multiplo di alcuni incrementi m specificati comporta i seguenti passaggi:

  1. Dividere x per m, che il risultato sia y;
  2. Arrotondare y ad un valore intero, chiamarlo q;
  3. Moltiplicare q per m per ottenere il valore arrotondato z.

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

Per esempio, l'arrotondamento x = 2,1784 dollari a centesimi interi (cioè ad un multiplo di 0,01) comporta il calcolo y = x/m = 2,1784/0,01 = 217,84, poi l'arrotondamento y al numero intero q = 218, ed infine il calcolo z = q×m = 218×0,01 = 2,18.

Quando si arrotonda ad un numero predeterminato di cifre significative, l'incremento m dipende dall'entità del numero da arrotondare (o del risultato arrotondato).

L'incremento m è normalmente una frazione finita in qualsiasi sistema numerico utilizzato per rappresentare i numeri. Per la visualizzazione agli esseri umani, questo di solito significa il sistema numerico decimale (cioè, m è un numero intero per una potenza di 10, come 1/1000 o 25/100). Per i valori intermedi memorizzati nei computer digitali, spesso significa il sistema numerico binario (m è un numero intero per una potenza di 2).

La funzione astratta "round()" che restituisce un numero intero da un valore reale arbitrario ha almeno una dozzina di definizioni concrete distinte presentate nella sezione da arrotondamento a numero intero. La funzione astratta a due argomenti "round()" è qui formalmente definita, ma in molti casi è usata con il valore implicito m = 1 per l'incremento e poi si riduce all'equivalente funzione astratta a singolo argomento, con la stessa dozzina di definizioni concrete distinte.

Arrotondamento a numero intero

La forma più elementare di arrotondamento è quella di sostituire un numero arbitrario con un numero intero. Tutte le seguenti modalità di arrotondamento sono implementazioni concrete della funzione astratta a singolo elemento "round()" presentata e utilizzata nelle sezioni precedenti.

Ci sono molti modi per arrotondare un numero y ad un intero q. I più comuni sono

  • arrotondare verso il basso (o prendere il pavimento, o arrotondare verso il meno infinito): q è il più grande numero intero che non supera y.

q = f l o o r ( y ) = y = - - y {\displaystyle q=\mathrm {floor}. (y)= \sinistra \piano sinistro \destra \rfondo destro =- \sinistra \sinistra \sinistra \sinistra \sinistra \sinistra \sinistra \sinistra \sinistra \sinistra \sinistra, \sinistra \sinistra \sinistra} {\displaystyle q=\mathrm {floor} (y)=\left\lfloor y\right\rfloor =-\left\lceil -y\right\rceil \,}

  • arrotondare verso l'alto (o prendere il soffitto, o arrotondare verso l'infinito): q è il più piccolo numero intero che non sia inferiore a y.

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

  • arrotondare verso lo zero (o troncare, o arrotondare lontano dall'infinito): q è la parte intera di y, senza le sue frazioni di cifre.

q = t r u n c a t o ( y ) = sgn ( y ) | y | = - sgn ( y ) - | y | {\a6}displaystyle q=\a6}{\a6}}displaystyle q={mathrm {truncate} (y)=operatorname {sgn}(y)\i}(y)\i}(y)\i}(y)\i}(y)\i}(y)\i}(y)\i}(y)\i}(y)\i}(y)\i}(y)\i}(y)\i}(y)\i}(y)\i}(y)\i}(y)\i}(y)\i}(y)\i}(y) {\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 \,}

  • arrotondare lontano da zero (o arrotondare verso l'infinito): se y è un intero, q è y; altrimenti q è l'intero che è più vicino a 0 ed è tale che y è tra 0 e q.

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

  • da rotondo a più vicino: q è il numero intero più vicino a y (vedi sotto per le regole di spareggio).

I primi quattro metodi sono chiamati arrotondamenti diretti, in quanto gli spostamenti dal numero originale y al valore arrotondato q sono tutti diretti verso o lontano dallo stesso valore limite (0, +∞, o -∞).

Se y è positivo, arrotondare verso il basso è lo stesso che arrotondare verso lo zero, e arrotondare verso l'alto è lo stesso che arrotondare verso l'alto è lo stesso che arrotondare verso l'esterno-da-zero. Se y è negativo, arrotondare verso il basso è uguale a arrotondare verso l'alto è uguale a arrotondare verso l'alto è uguale a arrotondare verso l'alto è uguale a arrotondare verso lo zero. In ogni caso, se y è intero, q è solo y. La seguente tabella illustra questi metodi di arrotondamento:

y

arrotondamento
(verso -∞)

raduno
(verso +∞)

roundtowardszero

roundaway
dazero

roundtonearest

+23.67

+23

+24

+23

+24

+24

+23.50

+23

+24

+23

+24

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

−23.67

−24

−23

−23

−24

−24

Laddove molti calcoli vengono effettuati in sequenza, la scelta del metodo di arrotondamento può avere un effetto molto significativo sul risultato. Un'istanza famosa ha riguardato un nuovo indice istituito dalla Borsa di Vancouver nel 1982. Inizialmente era stato fissato a 1000.000, e dopo 22 mesi era sceso a circa 520 - mentre i prezzi delle azioni erano generalmente aumentati nel periodo. Il problema era causato dal fatto che l'indice veniva ricalcolato migliaia di volte al giorno, e sempre arrotondato a 3 cifre decimali, in modo tale che gli errori di arrotondamento si accumulavano. Il ricalcolo con un migliore arrotondamento ha dato un valore dell'indice di 1098,892 alla fine dello stesso periodo.

Rompiscatole

Arrotondare un numero y al numero intero più vicino richiede qualche regola di tie-breaking per quei casi in cui y è esattamente a metà tra due interi - cioè quando la frazione parte di y è esattamente 0,5.

Arrotondare il mezzo giro

La seguente regola del tie-breaking, chiamata round half up (o round half towards plus infinity), è ampiamente utilizzata in molte discipline. Cioè, i valori a metà y sono sempre arrotondati all'infinito.

  • Se la frazione di y è esattamente 0,5, allora q = y + 0,5.

q = y + 0,5 = - - y - 0,5 {\fscx130\fscy130\frx40}displaystyle q=\pavimento a sinistra\pavimento y+0,5\fscx130\fscy130\frx40}rfondo destro =-\fscx130\fscy130\frx40}-pavimento a sinistra -y-0,5\fscx130\fscy130\frx40}--pavimento a destra {\displaystyle q=\left\lfloor y+0.5\right\rfloor =-\left\lceil -y-0.5\right\rceil \,}

Per esempio, con questa regola il valore 23,5 viene arrotondato a 24, ma -23,5 viene arrotondato a -23.

Questa è una delle due regole generalmente insegnate nelle classi di matematica elementare degli Stati Uniti. []

Se non fosse per le frazioni 0,5, gli errori di arrotondamento introdotti dal metodo "round to nearest" sarebbero abbastanza simmetrici: per ogni frazione che viene arrotondata per eccesso (come 0,268), c'è una frazione complementare (cioè 0,732) che viene arrotondata per difetto, della stessa quantità. Quando si arrotonda una grande serie di numeri con parti frazionarie casuali, questi errori di arrotondamento si compenserebbero statisticamente a vicenda, e il valore atteso (medio) dei numeri arrotondati sarebbe uguale al valore atteso dei numeri originali.

Tuttavia, la regola del tie-breaking rotondo a metà non è simmetrica, in quanto le frazioni che sono esattamente 0,5 vengono sempre arrotondate per eccesso. Questa asimmetria introduce una distorsione positiva negli errori di arrotondamento. Per esempio, se la frazione di y consiste di tre cifre decimali casuali, allora il valore atteso di q sarà di 0,0005 superiore al valore atteso di y. Per questo motivo, arrotondare a zero con la regola di arrotondamento al mezzo giro è anche (ambiguamente) conosciuto come arrotondamento asimmetrico.

Un motivo per arrotondare a 0,5 è che è necessario esaminare una sola cifra. Quando si vede 17.50000..., per esempio, le prime tre cifre, 17,5, determina che la cifra sarebbe arrotondata a 18. Se si usa la regola opposta (arrotondare per metà), allora tutte le cifre decimali zero dovrebbero essere esaminate per determinare se il valore è esattamente 17,5.

Metà giro verso il basso

Si può anche usare il mezzo giro verso il basso (o il mezzo giro verso l'infinito) in contrapposizione al più comune mezzo giro verso l'alto (il metodo del mezzo giro verso l'alto è una convenzione comune, ma non è altro che una convenzione).

  • Se la frazione di y è esattamente 0,5, allora q = y - 0,5.

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

Ad esempio, 23,5 viene arrotondato a 23, e -23,5 viene arrotondato a -24.

La regola del tie-break-breaking rotondo mezzo giù non è simmetrica, in quanto le frazioni che sono esattamente 0,5 vengono sempre arrotondate per difetto. Questa asimmetria introduce una distorsione negativa negli errori di arrotondamento. Per esempio, se la frazione di y consiste di tre cifre decimali casuali, allora il valore atteso di q sarà di 0,0005 inferiore al valore atteso di y. Per questo motivo, l'arrotondamento a zero con la regola del mezzo giro verso il basso è anche (ambiguamente) conosciuto come arrotondamento asimmetrico.

Metà turno lontano da zero

L'altro metodo di rottura delle cravatte comunemente insegnato e utilizzato è il mezzo tondo lontano da zero (o mezzo tondo verso l'infinito), cioè:

  • Se la frazione di y è esattamente 0,5, allora q = y + 0,5 se y è positiva, e q = y - 0,5 se y è negativa.

q = sgn ( y ) | y | + 0.5 = - sgn ( y ) - | y | - 0.5 {\a6}(y)\a6}(y)\a6}(y)\a6}(y)\a6}(y)\a6}(y)\a6}(y)\a6}(y)\a6}(y)\a6}(y)\a6}(y)\a6}(y)\a6}(y)\a6}(y)\a6}(Y) {\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 \,}

Ad esempio, 23,5 viene arrotondato a 24, e -23,5 viene arrotondato a -24.

Questo metodo tratta i valori positivi e negativi in modo simmetrico, e quindi è privo di distorsioni complessive se i numeri originali sono positivi o negativi con uguale probabilità. Tuttavia, questa regola introduce comunque una distorsione positiva per i numeri positivi e una distorsione negativa per quelli negativi.

Viene spesso utilizzato per le conversioni valutarie e gli arrotondamenti dei prezzi (quando l'importo viene prima convertito nella più piccola suddivisione significativa della valuta, come ad esempio i centesimi di euro) in quanto è facile da spiegare considerando solo la prima cifra frazionaria, indipendentemente dalle cifre di precisione supplementari o dal segno dell'importo (per una stretta equivalenza tra chi paga e chi riceve l'importo).

Mezzo giro verso lo zero

Si può anche arrotondare la metà verso lo zero (o arrotondare la metà a partire dall'infinito) in contrapposizione alla più comune metà arrotondata a partire dallo zero (il metodo dell'arrotondamento a partire dallo zero è una convenzione comune, ma non è altro che una convenzione).

  • Se la frazione di y è esattamente 0,5, allora q = y - 0,5 se y è positiva, e q = y + 0,5 se y è negativa.

q = sgn ( y ) | y | - 0.5 = - sgn ( y ) - | y | + 0.5 {\a6}}(y)\a6}(y)\a6}(y)\a6}(y)\a6}(y)\a6}(y)\a6}(y)\a6}(y)\a6}(y)\a6}(y)\a6}(y)\a6}(y)\a6}(y)\a6}(y)\a6}(y)\a6}(y)\a6}(y)\a6}(y)\a6}(y)\a6}(y)\a6}(Y) {\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 \,}

Ad esempio, 23,5 viene arrotondato a 23, e -23,5 viene arrotondato a -23.

Questo metodo tratta anche i valori positivi e negativi in modo simmetrico, e quindi è privo di distorsioni complessive se i numeri originali sono positivi o negativi con uguale probabilità. Tuttavia, questa regola introduce comunque una distorsione negativa per i numeri positivi e una distorsione positiva per quelli negativi.

Da metà giro a metà pari

Una regola di spareggio ancora meno pretestuosa è quella del pareggio, ovvero

  • Se la frazione di y è 0,5, allora q è il numero intero pari più vicino a y.

Così, ad esempio, +23,5 diventa +24, +22,5 diventa +22, -22,5 diventa -22 e -23,5 diventa -24.

Questo metodo tratta anche i valori positivi e negativi in modo simmetrico, e quindi è privo di distorsioni complessive se i numeri originali sono positivi o negativi con uguale probabilità. Inoltre, per la maggior parte delle distribuzioni ragionevoli dei valori di y, il valore atteso (medio) dei numeri arrotondati è essenzialmente lo stesso di quello dei numeri originali, anche se questi ultimi sono tutti positivi (o tutti negativi). Tuttavia, questa regola introdurrà comunque una polarizzazione positiva per i numeri pari (compreso lo zero) e una polarizzazione negativa per i dispari.

Questa variante del metodo dell'arrotondamento da tondo a tondo è anche detta arrotondamento imparziale (in modo ambiguo, e un po' abusivo), arrotondamento convergente, arrotondamento degli statistici, arrotondamento olandese, arrotondamento gaussiano, o arrotondamento dei banchieri. Questo è ampiamente utilizzato nella contabilità.

Questo è il modo di arrotondamento predefinito utilizzato nelle funzioni di calcolo e negli operatori IEEE 754.

Da mezzo giro a dispari

Un'altra regola di cravatta che è molto simile al mezzo giro al pari, cioè

  • Se la frazione di y è 0,5, allora q è il numero intero dispari più vicino a y.

Così, ad esempio, +22,5 diventa +23, +21,5 diventa +21, -21,5 diventa -21, -21,5 diventa -21 e -22,5 diventa -23.

Questo metodo tratta anche i valori positivi e negativi in modo simmetrico, e quindi è privo di distorsioni complessive se i numeri originali sono positivi o negativi con uguale probabilità. Inoltre, per la maggior parte delle distribuzioni ragionevoli dei valori di y, il valore atteso (medio) dei numeri arrotondati è essenzialmente lo stesso di quello dei numeri originali, anche se questi ultimi sono tutti positivi (o tutti negativi). Tuttavia, questa regola introdurrà comunque una distorsione negativa per i numeri pari (compreso lo zero) e una distorsione positiva per i dispari.

Questa variante non è quasi mai utilizzata nella maggior parte dei calcoli, tranne che in situazioni in cui si vuole evitare di arrotondare 0,5 o -0,5 a zero, o per evitare di aumentare la scala dei numeri rappresentati come virgola mobile (con intervalli limitati per l'esponente di scala), in modo che un numero non infinito si arrotonderebbe all'infinito, o che un piccolo valore denormale si arrotonderebbe ad un normale valore non zero (questi potrebbero verificarsi con la modalità da mezzo giro a pari). Effettivamente, questa modalità preferisce preservare la scala esistente dei numeri di parità, evitando risultati fuori scala quando possibile.

Arrotondamento stocastico

Un altro metodo imparziale per rompere le cravatte è l'arrotondamento stocastico:

  • Se la parte frazionaria di y è .5, scegliere q in modo casuale tra y + 0,5 e y - 0,5, con uguale probabilità.

Come l'arrotondamento da metà a metà pari, questa regola è essenzialmente priva di distorsioni complessive; ma è anche equa tra i valori di q pari e dispari. D'altra parte, introduce una componente casuale nel risultato; eseguire lo stesso calcolo due volte sullo stesso dato può produrre due risultati diversi. Inoltre, è aperto a pregiudizi inconsci se gli esseri umani (piuttosto che i computer o i dispositivi del caso) decidono "a caso" in quale direzione arrotondare.

Alternanza di tie-break-breakfast

Un metodo, più oscuro della maggior parte dei metodi, è quello dell'alternanza della metà circolare.

  • Se la parte frazionaria è 0,5, arrotondare alternativamente verso l'alto e verso il basso: per la prima occorrenza di una parte frazionaria 0,5, arrotondare verso l'alto; per la seconda occorrenza, arrotondare verso il basso; e così via.

Questo sopprime la componente casuale del risultato, se le occorrenze di 0,5 parti frazionarie possono essere efficacemente numerate. Ma può comunque introdurre una polarizzazione positiva o negativa secondo la direzione di arrotondamento assegnata alla prima occorrenza, se il numero totale di occorrenze è dispari.

Dithering semplice

In alcuni contesti, tutti i metodi di arrotondamento di cui sopra possono essere insoddisfacenti. Per esempio, si supponga che y sia una misura accurata di un segnale audio, che viene arrotondato ad un numero intero q per ridurre i costi di memorizzazione o di trasmissione. Se y cambia lentamente nel tempo, uno qualsiasi dei metodi di arrotondamento di cui sopra risulterà in q completamente costante per lunghi intervalli, separati da salti improvvisi di ±1. Quando il segnale q viene riprodotto, questi passi saranno sentiti come un rumore molto sgradevole, ed ogni variazione del segnale originale tra due valori interi andrà completamente persa.

Un modo per evitare questo problema è quello di arrotondare ogni valore y verso l'alto con probabilità pari alla sua frazione, e arrotondare verso il basso con il complemento di quella probabilità. Per esempio, il numero 23.17 verrebbe arrotondato a 24 con probabilità 0.17, e giù a 23 con probabilità 1 - 0.17 = 0.83. (Ciò equivale ad arrotondare verso il basso y + s, dove s è un numero casuale uniformemente distribuito tra 0 e 1). Con questo speciale arrotondamento, noto come dithering, i passi improvvisi vengono sostituiti da un rumore meno sgradevole, e anche le piccole variazioni del segnale originale saranno preservate in una certa misura. Come l'approccio stocastico al tie-breaking, il dithering non ha alcuna distorsione: se tutti i valori di frazione sono ugualmente probabili, arrotondare per eccesso di una certa quantità è altrettanto probabile che arrotondare per difetto di quella stessa quantità; e lo stesso vale per la somma di più numeri arrotondati. D'altra parte, il dithering introduce nel risultato una componente casuale, molto maggiore di quella della rottura stocastica del legame.

Più precisamente, l'errore di roundoff per ogni numero dithered sarà una variabile casuale uniformemente distribuita con valore medio pari a zero, ma con una deviazione standard 1 / 12 ≈ 0,2886 {\fscx130\fscy130\fscy130\frx40} {\fscx130\fscy130\frx40}\fscy130\frx40}}Displaystyle 1/{\sqrt {12}\fscy130\frx40}}approssimativamente 0,2886 {\displaystyle 1/{\sqrt {12}}\approx 0.2886}che è migliore della deviazione standard di 1/2 con i metodi predittivi semplici, ma leggermente superiore a quella con il metodo stocastico più semplice. Tuttavia, la somma di n numeri arrotondati sarà una variabile casuale con errore zero atteso, ma con deviazione standard n / 12 {\sqrt {\sqrt {n}/{\sqrt {12}}}}. {\displaystyle {\sqrt {n}}/{\sqrt {12}}}(il rumore totale rimanente) che diverge semiquadraticamente e può diventare facilmente percepibile, anche se la deviazione standard dell'errore di roundoff per campione sarà 1 / 12 n {\displaystyle 1/{\sqrt {12n}}} {\displaystyle 1/{\sqrt {12n}}}che converge lentamente semiquadraticamente a zero. Quindi, questa distribuzione casuale può essere ancora troppo alta per alcune applicazioni che stanno arrotondando molti dati.

Dithering multidimensionale

Questa variante del metodo di dithering semplice arrotonda ancora i valori con probabilità pari alla sua frazione. Tuttavia, invece di utilizzare una distribuzione casuale per arrotondare i campioni isolati, l'errore di arrotondamento che si verifica ad ogni campione arrotondato viene totalizzato per gli elementi circostanti successivi da campionare o calcolare; questo valore accumulato viene poi aggiunto al valore di questi valori successivi campionati o calcolati da arrotondare, in modo che i valori modificati prendano in considerazione questa differenza utilizzando un modello predittivo (come il dithering Floyd-Steinberg).

I valori modificati vengono poi arrotondati con uno qualsiasi dei metodi di arrotondamento di cui sopra, i migliori sono quelli stocastici o di dithering: in quest'ultimo caso, la somma di n numeri arrotondati sarà comunque una variabile casuale con errore previsto pari a zero ma con un'eccellente deviazione standard costante di 1 / 12 {\sqrt {12}}}}. {\displaystyle 1/{\sqrt {12}}}invece di divergere semi-quadraticamente quando si esegue il dithering di campioni isolati; e la deviazione media complessiva dell'errore di roundoff per campione arrotondato sarà di 1 / ( n 12 ) {\displaystyle 1/(n{\sqrt {12}})}che convergerà iperbolicamente a zero, più velocemente che con la convergenza semi-iperbolica quando si esegue il dithering di campioni isolati.

In pratica, quando si arrotondano grandi serie di dati campionati (come il rendering audio, immagine e video), l'accumulo di errori di roundoff è più frequentemente utilizzato con un semplice arrotondamento predittivo dei valori modificati (come l'arrotondamento verso lo zero), perché manterrà comunque la convergenza iperbolica verso lo zero dell'errore di roundoff medio complessivo e della sua deviazione standard. Questo miglioramento è spesso utilizzato nell'elaborazione di immagini e audio (in particolare per accurate operazioni di ridimensionamento e di antialiasing, dove il semplice dithering probabilistico dei valori isolati può ancora produrre rumore percepibile, a volte anche peggiore degli effetti moiré che si verificano con semplici metodi di arrotondamento non probabilistici applicati a campioni isolati).

L'effettiva propagazione degli errori di arrotondamento accumulati può dipendere dalla dimensione discreta dei dati campionati da arrotondare: quando si campionano immagini bidimensionali, incluse immagini a colori (che aggiungono la dimensione discreta dei piani di colore), o video tridimensionali (che aggiungono una dimensione temporale discreta), o dati audio polifonici (utilizzando le dimensioni discrete del tempo e del canale), può comunque essere preferibile propagare questo errore in una direzione preferenziale, o ugualmente in diverse dimensioni ortogonali, come ad esempio verticalmente rispetto a quelle del canale. orizzontalmente per immagini bidimensionali, o in canali di colore paralleli nella stessa posizione e/o timestamp, e a seconda di altre proprietà di queste dimensioni discrete ortogonali (secondo un modello di percezione). In questi casi, possono essere utilizzati più accumulatori di errore di roundoff (almeno uno per ogni dimensione discreta), o un (n-1)-vettore di dimensioni (o matrice) di accumulatori.

In alcuni di questi casi, le dimensioni discrete dei dati da campionare e da arrotondare possono essere trattate in modo non ortogonale: per esempio, quando si lavora con immagini colorate, i dati dei piani di colore tricromatici in ogni dimensione fisica (altezza, larghezza e, opzionalmente, tempo) potrebbero essere rimappati usando un modello di colore percettivo, in modo che gli accumulatori di errori di arrotondamento siano progettati per preservare la leggerezza con una maggiore probabilità rispetto alla tinta o alla saturazione, invece di propagare gli errori in ogni piano di colore ortogonale in modo indipendente; e nei dati audio stereofonici i due canali di dati arrotondati (sinistra e destra) possono essere arrotondati insieme per preservare il loro valore medio in priorità alla loro differenza effettiva che assorbirà la maggior parte degli errori di roundoff rimanenti, in modo equilibrato intorno allo zero.

Arrotondamento a frazioni semplici

In alcuni contesti è auspicabile arrotondare un dato numero x ad una frazione "ordinata" - cioè la frazione più vicina z = m/n il cui numeratore m e denominatore n non superano un dato massimo. Questo problema è abbastanza distinto da quello dell'arrotondamento di un valore ad un numero fisso di cifre decimali o binarie, o ad un multiplo di una data unità m. Questo problema è legato alle sequenze Farey, all'albero Stern-Brocot e alle frazioni continue.

Arrotondamento in scala

Questo tipo di arrotondamento, chiamato anche arrotondamento a scala logaritmica, è una variante dell'arrotondamento ad un determinato incremento ma con un incremento che viene modificato a seconda della scala e dell'entità del risultato. Concretamente, l'intento è quello di limitare il numero di cifre significative, arrotondando il valore in modo da far cadere le cifre non significative. Questo tipo di arrotondamento avviene implicitamente con numeri calcolati con valori in virgola mobile con precisione limitata (come i tipi float IEEE-754 e doppi), ma può essere usato più in generale per arrotondare qualsiasi valore reale con qualsiasi numero positivo di cifre significative e qualsiasi base reale strettamente positiva.

Ad esempio, può essere usato nei grafici ingegneristici per rappresentare dati con una scala logaritmica a passi variabili (ad esempio lunghezze d'onda, la cui base non è necessariamente una misura intera), o nei dati statistici per definire classi di valori reali entro intervalli di larghezze crescenti esponenzialmente (ma l'uso più comune è con basi intere come 10 o 2). [fonte?]

Questo tipo di arrotondamento è basato su una scala logaritmica definita da un fattore di scala reale fisso non zero s (nella maggior parte dei casi questo fattore è s=1) e una base positiva fissa b>1 (non necessariamente un numero intero e molto spesso diverso dal fattore di scala), e un numero intero fisso n>0 di cifre significative in quella base (che determinerà il valore dell'incremento da utilizzare per l'arrotondamento, insieme alla scala effettiva calcolata del numero arrotondato).

Il numero dell'argomento primario (così come il numero arrotondato risultante) è rappresentato per primo in notazione esponenziale x = s-a-m-bc, in modo che il segno s sia o +1 o -1, la mantissa assoluta a è limitata all'intervallo positivo semiaperto [1/b,1], e l'esponente c è un qualsiasi numero intero (positivo o negativo). In questa rappresentazione, tutte le cifre significative si trovano nella parte frazionaria della mantissa assoluta la cui parte intera è sempre zero.

Se il numero sorgente (o numero arrotondato) è 0, la mantisssa assoluta a è definita come 0, l'esponente c è fissato ad un valore arbitrario (0 nella maggior parte delle convenzioni, ma alcune rappresentazioni in virgola mobile non possono usare una mantissa assoluta nulla ma riservano un valore massimo negativo specifico all'esponente c per rappresentare il numero 0 stesso), e il segno s può essere scelto arbitrariamente tra -1 o +1 (è generalmente impostato a +1 per lo zero semplice, oppure è impostato sullo stesso segno dell'argomento nel valore arrotondato se la rappresentazione numerica permette di differenziare gli zeri positivi e negativi, anche se alla fine rappresentano lo stesso valore numerico 0).

Una rappresentazione esponenziale in scala come x = a-s-bc può anche essere usata in modo equivalente, con una mantissa firmata a uguale a zero o all'interno di uno dei due intervalli semiaperti (-1,-1/b] e [+1/b,+1), e questo sarà il caso nell'algoritmo sottostante.

I passi per calcolare questo arrotondamento in scala sono generalmente simili ai seguenti:

  1. se x è uguale a zero, restituire semplicemente x; altrimenti:
  2. convertire x nella rappresentazione esponenziale in scala, con una mantissa firmata:
    x = a ⋅ s ⋅ b ⋅ b c {\an8}{\an8} stile di rappresentazione x=a \cdot s \cdot b^{c},}
    {\displaystyle x=a\cdot s\cdot b^{c}\,}
    1. Lasciate che x' sia il valore non scalare di x, dividendolo per il fattore di scala s:
      x ′ = x / s {\a6}
      {\displaystyle x'=x/s\,};
    2. lasciare che l'esponente di scala c sia uno più il logaritmo di base b del valore assoluto di x', arrotondato ad un numero intero (verso l'infinito meno):
      c = 1 +
      log b | x ′ ′ | = 1 + log b | x / s | {\a6}displaystyle c=1+\a sinistra \log _{b}\a sinistra \x'\a destra \a destra \a destra \a destra \a destra \a destra, } {\displaystyle c=1+\left\lfloor \log _{b}\left|x'\right|\right\rfloor =1+\left\lfloor \log _{b}\left|x/s\right|\right\rfloor \,};
    3. che la mantissa firmata a sia il prodotto di x' diviso per b alla potenza c:
      a = x ′ ⋅ b - c = x / s ⋅ b - c {\fscx130\fscy130\frx40}}- a = x ′ ⋅ b - c = x / s ⋅ b - c {\fscx130\fscy130\frx40}- a=x'\cdot b^{-c}=x/s\cdot b^{-c},}
      {\displaystyle a=x'\cdot b^{-c}=x/s\cdot b^{-c}\,}
  3. calcolare il valore arrotondato in questa rappresentazione:
    1. lasciate che c' sia l'esponente iniziale della scala c di x':
      c ′ = c {\fscx130\fscy130\frx40}- c ′ = c {\fscx130\fscy130\frx40}.
      {\displaystyle c'=c\,}
    2. lasciate che m sia l'incremento per arrotondare la mantissa a in base al numero di cifre significative da mantenere:
      m = b - n {\fscx130\fscy130\frx40}M = b - n {\fscx130\fscy130\frx40}M = b - n
      {\displaystyle m=b^{-n}\,}
    3. lasciate a' essere la mantissa firmata a arrotondata secondo questo incremento m e il modo di arrotondamento selezionato:
      a ′ = r o u n d ( a , m ) = r o u n d ( x / s ⋅ b n - c ′ ) ⋅ b - n {\fscx130\fscy130\frx40}(a,m)= \fscx130\fscy130\frx40}(x/s \cdot b^{n-c'})\cdot b^{-n},}}(x/s \cdot b^{n-c'′)
      {\displaystyle a'=\mathrm {round} (a,m)=\mathrm {round} (x/s\cdot b^{n-c'})\cdot b^{-n}\,}
    4. se il valore assoluto di a' non è inferiore a b, allora diminuite n (moltiplicate l'incremento m per b), incrementate l'esponente di scala c', dividete la mantissa firmata a per b, e riavviate l'arrotondamento della nuova mantissa firmata a in a' con la stessa formula; questo passo può essere evitato solo se la funzione abtract "round()" è sempre l'arrotondamento a verso 0 (i.e. quando si tratta di un semplice troncamento), ma è necessaria se può essere l'arrotondamento di a verso l'infinito, perché la mantissa arrotondata può avere un esponente di scala più alto in questo caso, lasciando una cifra di precisione in più.
  4. restituire il valore arrotondato:
    y = s c a l e d r o n d ( x , s , b , n ) = a ′ ⋅ s ⋅ b c ′ = r o n d ( x / s ⋅ b n - c ′ ) ⋅ s ⋅ b c ′ - n {\i}displaystyle y= \i}mathrm {scaledround} (x,s,b,n)=a'\cdot s\cdot b^{c'^{c'}={\code(01)}{\code(01){\code(01){\code(01){\code(01){\code(01){\code(01){\code(01){\code(01){\code(01){\code(01){\code(01)}
    {\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}\,}.

Per la funzione astratta "round()", questo tipo di arrotondamento può utilizzare uno qualsiasi dei modi di arrotondamento a numeri interi descritti in modo più completo nella prossima sezione, ma è più frequentemente il modo da arrotondamento a più vicino (con le regole di tie-breaking descritte anche in modo più completo di seguito).

Per esempio:

  • l'arrotondamento in scala di 1,234 con fattore di scala 1 in base 10 e 3 cifre significative (massima precisione relativa=1/1000), quando si usa un qualsiasi arrotondamento al modo più vicino, restituirà 1,23;
  • un arrotondamento simile in scala di 1,236 restituirà 1,24;
  • un arrotondamento simile in scala di 21,236 restituirà 21,2;
  • un arrotondamento simile in scala di 321.236 restituirà 321;
  • l'arrotondamento in scala di 1,234 fattore di scala 1 in base 10 e 3 cifre significative (massima precisione relativa=1/1000), quando si usa la modalità di arrotondamento verso il basso, restituirà 1,23;
  • Un simile arrotondamento in scala di 1,236 restituirà anche 1,23;
  • l'arrotondamento in scala di 3 π / 7 ≈ 6,8571 ⋅ π ⋅ π ⋅ 2 - 4 \displaystyle \scriptstyle 3\pi /7 \ \ \ \ \x6.8571\cdot \pi \cdot 2^{-4}}{\displaystyle \scriptstyle 3\pi /7\;\approx \;6.8571\cdot \pi \cdot 2^{-4}} con fattore di scala π {\displaystyle \scriptstyle \pi \pi } {\displaystyle \scriptstyle \pi }in base 2 e 3 cifre significative (massima precisione relativa=1/8), quando si usa la modalità round down, restituirà 6 ⋅ π ⋅ 2 - 4 = 3 π / 8 {\displaystyle \scriptstyle 6\cdot \pi \pi \cdot 2^{-4};=;3\pi /8} {\displaystyle \scriptstyle 6\cdot \pi \cdot 2^{-4}\;=\;3\pi /8};
  • arrotondamento simile in scala di 5 π / 7 ≈ 5,7143 ⋅ π π ⋅ 2 - 3 \displaystyle \scriptstyle 5 \pi /7 \ \ \ \3;\5,7143 \pi \pi \cdot 2^{-3}}}{\displaystyle \scriptstyle 5\pi /7\;\approx \;5.7143\cdot \pi \cdot 2^{-3}} restituirà 5 ⋅ π ⋅ 2 - 3 = 5 π / 8 {\displaystyle \displaystyle \scriptstyle 5 \cdot \pi \cdot 2^{-3};=\;5\pi /8}{\displaystyle \scriptstyle 5\cdot \pi \cdot 2^{-3}\;=\;5\pi /8} ;
  • arrotondamento simile in scala di π / 7 ≈ 4,5714 ⋅ π π ⋅ 2 - 5 \displaystyle \scriptstyle \pi \pi /7 \ \ \prossimamente \4,5714 \pi \pi \cdot 2^{-5}}}{\displaystyle \scriptstyle \pi /7\;\approx \;4.5714\cdot \pi \cdot 2^{-5}} restituirà 4 ⋅ π ⋅ 2 - 5 = π / 8 {\displaystyle \displaystyle \scriptstyle 4 \cdot \pi \cdot 2^{-5};= \ \pi /8}{\displaystyle \scriptstyle 4\cdot \pi \cdot 2^{-5}\;=\;\pi /8} .
  • simile arrotondamento in scala di π / 8 = 4 ⋅ π ⋅ 2⋅ π ⋅ 2 - 5 {\displaystyle \scriptstyle \pi /8\;=;4 \cdot \pi \pi \cdot 2^{-5}}{\displaystyle \scriptstyle \pi /8\;=\;4\cdot \pi \cdot 2^{-5}} restituirà anche 4 ⋅ π ⋅ 2 - 5 = π / 8 {\displaystyle \scriptstyle 4 \cdot \pi \cdot 2^{-5};= \ \ \pi /8} {\displaystyle \scriptstyle 4\cdot \pi \cdot 2^{-5}\;=\;\pi /8}.
  • arrotondamento simile in scala di π / 15 ≈ 4,2667 ⋅ π π ⋅ 2 - 6 \displaystyle \scriptstyle \pi \pi /15 \\ \15 \ \\x22;\x224,2667 \pi \pi \cdot 2^{-6}}}{\displaystyle \scriptstyle \pi /15\;\approx \;4.2667\cdot \pi \cdot 2^{-6}} restituirà 4 ⋅ π ⋅ 2 - 6 = π / 16 {\x22displaystyle \x22displaystyle \x22scriptstyle 4\cdot \pi \x222^{-6};\x22pi /16} {\displaystyle \scriptstyle 4\cdot \pi \cdot 2^{-6}\;=\;\pi /16}.

Arrotondare al valore disponibile

Il legname finito, la carta da scrivere, i condensatori e molti altri prodotti sono solitamente venduti solo in pochi formati standard.

Molte procedure di progettazione descrivono come calcolare un valore approssimativo, e poi "arrotondare" ad una certa dimensione standard usando frasi come "arrotondare verso il basso al valore standard più vicino", "arrotondare verso l'alto al valore standard più vicino", o "arrotondare al valore standard più vicino".

Quando un insieme di valori preferiti è equidistante su una scala logaritmica, la scelta del valore preferito più vicino a un dato valore può essere vista come una sorta di arrotondamento in scala. Tali valori "arrotondati" possono essere calcolati direttamente.

Arrotondamento a virgola mobile

Nell'aritmetica a virgola mobile, l'arrotondamento mira a trasformare un dato valore x in un valore z con un numero specificato di cifre significative. In altre parole, z dovrebbe essere un multiplo di un numero m che dipende dalla grandezza di z. Il numero m è una potenza della base (di solito 2 o 10) della forma a virgola mobile.

A parte questo dettaglio, tutte le varianti di arrotondamento discusse in precedenza valgono anche per l'arrotondamento dei numeri a virgola mobile. L'algoritmo per tale arrotondamento è presentato nella sezione Arrotondamento scalare sopra, ma con un fattore di scala costante s=1, e un numero intero di base b>1.

Per i risultati in cui il risultato arrotondato sarebbe eccessivo, il risultato per un arrotondamento diretto è o l'infinito appropriato firmato, o il numero finito positivo positivo rappresentabile più alto (o il numero finito negativo rappresentabile più basso se x è negativo), a seconda della direzione dell'arrotondamento. Il risultato di un overflow per il solito caso di arrotondamento a pari è sempre l'infinito appropriato.

Inoltre, se il risultato arrotondato risultasse insufficiente, cioè se l'esponente superasse il valore intero rappresentabile più basso, il risultato effettivo potrebbe essere o zero (eventualmente firmato se la rappresentazione può mantenere una distinzione di segni per gli zeri), o il più piccolo numero finito positivo rappresentabile positivo (o il più alto numero finito negativo rappresentabile se x è negativo), eventualmente un numero positivo o negativo denorme (se la mantissa sta memorizzando tutte le sue cifre significative, nel qual caso la cifra più significativa può essere ancora memorizzata in una posizione più bassa impostando le cifre più alte memorizzate a zero, e questa mantissa memorizzata non fa cadere la cifra più significativa, cosa che è possibile quando la base b=2 perché la cifra più significativa è sempre 1 in quella base), a seconda della direzione di arrotondamento. Il risultato di un sottofondo per il solito caso di arrotondamento a pari è sempre lo zero appropriato.

Doppio arrotondamento

Arrotondando un numero due volte di seguito a diverse precisioni, con quest'ultima precisione più grossolana, non si garantisce lo stesso risultato dell'arrotondamento una volta alla precisione finale, tranne nel caso di arrotondamento diretto. Per esempio, arrotondando 9,46 ad un decimale si ottiene 9,5, e poi 10 quando si arrotonda ad un numero intero usando l'arrotondamento dalla metà al pari, ma si otterrebbe 9 quando si arrotonda direttamente al numero intero.

Alcuni linguaggi informatici e la norma IEEE 754-2008 stabiliscono che nei calcoli semplici il risultato non deve essere arrotondato due volte. Questo è stato un problema particolare con Java, in quanto è stato progettato per essere eseguito in modo identico su macchine diverse, per ottenere questo risultato con la virgola mobile x87 è stato necessario utilizzare speciali trucchi di programmazione. Il linguaggio Java è stato modificato per consentire risultati diversi in cui la differenza non ha importanza e richiede un qualificatore "strictfp" da utilizzare quando i risultati devono essere conformi con precisione.

Calcolo esatto con aritmetica arrotondata

È possibile utilizzare l'aritmetica arrotondata per valutare il valore esatto di una funzione con un dominio e un intervallo discreti. Per esempio, se sappiamo che un intero n è un quadrato perfetto, possiamo calcolare la sua radice quadrata convertendo n in un valore in virgola mobile x, calcolando la radice quadrata approssimativa y di x con virgola mobile, e poi arrotondando y al più vicino intero q. Se n non è troppo grande, l'errore di arrotondamento in virgola mobile in y sarà inferiore a 0,5, quindi il valore arrotondato q sarà la radice quadrata esatta di n. Nella maggior parte dei computer moderni, questo metodo può essere molto più veloce del calcolo della radice quadrata di n con un algoritmo a tutti gli interi.

Il dilemma del costruttore di tavoli

William Kahan ha coniato il termine "The Table-Maker's Dilemma" per il costo sconosciuto dell'arrotondamento delle funzioni trascendentali:

"Nessuno sa quanto costerebbe calcolare y^w correttamente arrotondato per ogni due argomenti a virgola mobile a cui non si sovra/sottoflutto. Invece, rispettabili biblioteche matematiche calcolano funzioni elementari trascendentali per lo più all'interno di poco più della metà di un'ulp e quasi sempre ben all'interno di un'ulp. Perché non si può arrotondare Y^W all'interno di mezza ulp come SQRT? Perché nessuno sa quanto costerebbe il calcolo... Non esiste un modo generale per prevedere quante cifre in più dovranno essere trasportate per calcolare un'espressione trascendentale e arrotondarla correttamente a qualche numero di cifre preassegnate. Anche il fatto (se vero) che un numero finito di cifre extra sarà in definitiva sufficiente può essere un teorema profondo".

Lo standard IEEE in virgola mobile garantisce che aggiungendo, sottraendo, moltiplicando, moltiplicando, dividendo, radice quadrata e rimanendo in virgola mobile si ottiene il risultato correttamente arrotondato dell'operazione di precisione infinita. Tuttavia, nessuna garanzia di questo tipo è data per funzioni più complesse e sono tipicamente accurate solo all'interno dell'ultimo bit nel migliore dei casi.

Utilizzando il teorema di Gelfond-Schneider e il teorema di Lindemann-Weierstrass, si può dimostrare che molte delle funzioni elementari standard restituiscono risultati trascendentali quando vengono date argomentazioni razionali non zero; pertanto è sempre possibile arrotondare correttamente tali funzioni. Tuttavia la determinazione di un limite per una data precisione su come devono essere calcolati i risultati accurati prima che un risultato correttamente arrotondato possa essere garantito può richiedere molto tempo di calcolo.

Ci sono alcuni pacchetti in giro che offrono la massima precisione. Il pacchetto MPFR fornisce risultati di precisione arbitrari correttamente arrotondati. IBM ha scritto un pacchetto per funzioni elementari IEEE veloci e precise e in futuro le librerie standard potrebbero offrire tale precisione.

E' possibile concepire numeri calcolabili ben definiti che non è mai possibile arrotondare correttamente, indipendentemente dal numero di cifre calcolate. Per esempio, se la congettura di Goldbach è vera ma non dimostrabile, allora è impossibile arrotondare correttamente 0,5 + 10-n dove n è il primo numero pari maggiore di 4 che non è la somma di due numeri primi, o 0,5 se non c'è tale numero. Questo può comunque essere approssimato a qualsiasi precisione, anche se la congettura non è dimostrabile.

Storia

Il concetto di arrotondamento è molto vecchio, forse più vecchio anche del concetto di divisione. Alcune antiche tavolette di argilla trovate in Mesopotamia contengono tabelle con valori arrotondati di reciproci e radici quadrate in base 60. Sono antiche anche le approssimazioni arrotondate a π, la lunghezza dell'anno e la durata del mese.

Il metodo Round-to-even serve come standard ASTM (E-29) dal 1940. L'origine dei termini arrotondamento imparziale e arrotondamento statistico sono abbastanza autoesplicativi. Nella quarta edizione del 1906 di Probability and Theory of Errors (Probabilità e teoria degli errori) Robert Simpson Woodward chiamò questa "regola del computer", indicando che allora era di uso comune per i computer umani che calcolavano le tabelle matematiche. L'articolo di Churchill Eisenhart del 1947 "Effetti dell'arrotondamento o del raggruppamento dei dati" (in Selected Techniques of Statistical Analysis, McGrawHill, 1947, Eisenhart, Hastay, e Wallis, editori) indicava che la pratica era già "ben consolidata" nell'analisi dei dati.

L'origine del termine "arrotondamento dei banchieri" rimane più oscura. Se questo metodo di arrotondamento è mai stato uno standard nel settore bancario, le prove si sono rivelate estremamente difficili da trovare. Al contrario, la sezione 2 del rapporto della Commissione Europea The Introduction of the Euro and the Rounding of Currency Amounts (L'introduzione dell'euro e l'arrotondamento degli importi in valuta) suggerisce che in precedenza non esisteva un approccio standard all'arrotondamento in ambito bancario; e specifica che gli importi "a metà strada" dovrebbero essere arrotondati per eccesso.

Fino agli anni '80, il metodo di arrotondamento utilizzato nell'aritmetica dei computer a virgola mobile era solitamente fissato dall'hardware, scarsamente documentato, incoerente e diverso per ogni marca e modello di computer. Questa situazione è cambiata dopo l'adozione dello standard in virgola mobile IEEE 754 da parte della maggior parte dei produttori di computer. Lo standard permette all'utente di scegliere tra diverse modalità di arrotondamento e, in ogni caso, specifica con precisione come i risultati devono essere arrotondati. Queste caratteristiche hanno reso i calcoli numerici più prevedibili e indipendenti dalla macchina e hanno reso possibile l'implementazione efficiente e coerente dell'aritmetica ad intervalli.

Funzioni di arrotondamento nei linguaggi di programmazione

La maggior parte dei linguaggi di programmazione forniscono funzioni o una sintassi speciale per arrotondare i numeri frazionari in vari modi. I primi linguaggi numerici, come FORTRAN e C, forniscono un solo metodo, di solito il troncamento (verso lo zero). Questo metodo predefinito potrebbe essere implicito in certi contesti, come quando si assegna un numero frazionario ad una variabile intera, o si usa un numero frazionario come indice di un array. Altri tipi di arrotondamento dovevano essere programmati esplicitamente; per esempio, l'arrotondamento di un numero positivo al numero intero più vicino poteva essere implementato aggiungendo 0,5 e troncando.

Negli ultimi decenni, tuttavia, la sintassi e/o le librerie standard della maggior parte delle lingue hanno comunemente fornito almeno le quattro funzioni di arrotondamento di base (su/soffitto, giù/pavimento, più vicino e verso lo zero). Il metodo di arrotondamento può variare a seconda della lingua e della versione, e/o può essere selezionabile dal programmatore. Diversi linguaggi seguono l'esempio dello standard a virgola mobile IEEE-754, e definiscono queste funzioni prendendo un argomento a virgola mobile a doppia precisione e restituendo il risultato dello stesso tipo, che poi può essere convertito in un numero intero se necessario. Dato che il formato IEEE a doppia precisione ha 52 bit di frazione, questo approccio può evitare i sovrascarichi spuri nei linguaggi con numeri interi a 32 bit. Alcuni linguaggi, come PHP, forniscono funzioni che arrotondano un valore a un numero di cifre decimali specificato, ad esempio da 4321.5678 a 4321.57 o 4300. Inoltre, molti linguaggi forniscono una funzione "printf" o una funzione simile di formattazione delle stringhe, che permette di convertire un numero frazionario in una stringa, arrotondato a un numero di cifre decimali specificato dall'utente (la precisione). D'altra parte, la troncatura (arrotondamento a zero) è ancora il metodo di arrotondamento predefinito usato da molti linguaggi, specialmente per la divisione di due valori interi.

Al contrario, CSS e SVG non definiscono alcuna precisione massima specifica per i numeri e le misure, che sono trattati ed esposti nel loro Document Object Model e nella loro interfaccia Interface-description-language come stringhe come se avessero una precisione infinita, e non discriminano tra numeri interi e valori in virgola mobile; tuttavia, le implementazioni di questi linguaggi tipicamente convertono questi numeri in doppie virgole mobili IEEE-754 prima di esporre le cifre calcolate con una precisione limitata (in particolare all'interno di rilegature di interfaccia standard Javascript o ECMAScript).

Altri standard di arrotondamento

Alcune discipline o istituzioni hanno emanato norme o direttive per l'arrotondamento.

Osservazioni meteorologiche degli Stati Uniti

In una linea guida emanata a metà del 1966, l'Ufficio del Coordinatore Federale per la Meteorologia degli Stati Uniti ha stabilito che i dati meteorologici devono essere arrotondati al numero tondo più vicino, con la regola del tie-breaking "round half up". Ad esempio, 1,5 arrotondato al numero intero dovrebbe diventare 2, e -1,5 dovrebbe diventare -1. Prima di quella data, la regola di spareggio era "arrotondare il mezzo giro lontano da zero".

Zero negativo in meteorologia

Alcuni meteorologi possono scrivere "-0" per indicare una temperatura tra 0,0 e -0,5 gradi (esclusiva) che è stata arrotondata per intero. Questa notazione viene usata quando il segno negativo è considerato importante, non importa quanto piccola sia la grandezza; per esempio, quando si arrotondano le temperature nella scala Celsius, dove sotto lo zero indica il congelamento. []

Pagine correlate

Domande e risposte

D: Cosa significa la parola "arrotondamento"?


R: L'arrotondamento consiste nel sostituire un valore numerico con un altro valore approssimativamente uguale, ma con una forma più breve, più semplice o più esplicita.

D: Qual è un esempio di arrotondamento?


R: Un esempio di arrotondamento è l'arrotondamento di 23,74 dollari USA a 24 dollari USA, l'arrotondamento della frazione 312/937 a 1/3 e l'arrotondamento dell'espressione 2 {displaystyle {\sqrt {2}} a 1,41.

D: Perché arrotondiamo i numeri?


R: Arrotondiamo i numeri per ottenere un valore più facile da scrivere e da gestire rispetto all'originale. Può anche essere fatto per indicare la precisione di un numero calcolato.

D: Quali sono i potenziali problemi dell'arrotondamento?


R: L'arrotondamento può introdurre un errore di arrotondamento come risultato e, in alcuni casi, può rendere il risultato privo di significato a causa degli errori che si accumulano nel tempo nei calcoli. Inoltre, l'arrotondamento accurato delle funzioni matematiche trascendentali può essere difficile, perché non è possibile sapere quante cifre extra devono essere calcolate per decidere se arrotondare per eccesso o per difetto in anticipo.

D: In che modo l'arrotondamento è correlato alla quantizzazione?


R: L'arrotondamento ha molte analogie con la quantizzazione, che si verifica quando le quantità fisiche devono essere codificate da numeri o segnali digitali.

AlegsaOnline.com - 2020 / 2023 - License CC3