Perché alcune lingue arrotondano all'intero EVEN più vicino?


44

Linguaggi di programmazione come Scheme (R5RS) e Python ( vedi questa domanda ) arrotondano verso il numero intero pari più vicino quando il valore è esattamente tra i numeri interi circostanti.

Qual è il ragionamento alla base di questo?
Esiste un'idea matematica che renda più facile ragionare sui seguenti calcoli?

(R5RS fa riferimento allo standard IEEE in virgola mobile come fonte di questo comportamento.)



1
IEEE consente la modalità di arrotondamento multiplo. Questo è uno di loro. Alcune lingue consentono persino di modificare la modalità di arrotondamento durante l'esecuzione.
Tobias Brandt,

5
Potresti leggere la sezione Tie-break per arrotondare su Wikipedia e il ragionamento dell'associazione dietro ognuno di essi.


1
"Sebbene l'esatto sia una questione di discussione con numeri in virgola mobile" Non è una questione di discussione, è specificato in modo molto preciso. Ad esempio, i numeri che sono rilevanti qui (come 42.5) possono essere rappresentati esattamente, perché sono frazioni binarie. Ciò che non può essere rappresentato esattamente sono frazioni diverse dal binario, comprese le frazioni decimali.
svick,

Risposte:


39

Qualche tempo fa ho costruito un programma di test per l'arrotondamento successivo, perché è fondamentalmente uno stress test nel caso peggiore per un algoritmo di arrotondamento.

Per ogni numero compreso tra 0 e 9.999, per prima cosa si arrotondano ai 10 più vicini, quindi ai 100 più vicini, quindi ai 1000 più vicini. a 2, quindi a 1.) Questo set di numeri ha un valore medio di 4999,5.

Se tutti e tre gli arrotondamenti vengono eseguiti utilizzando il metodo "arrotondare per metà", i risultati sono i seguenti (la prima colonna è il risultato dell'arrotondamento, la seconda colonna è il numero di numeri arrotondati a quel risultato, ovvero un istogramma).

0     445
1000  1000
2000  1000
3000  1000
4000  1000
5000  1000
6000  1000
7000  1000
8000  1000
9000  1000
10000 555

Il risultato differisce da una singola "metà arrotondata per eccesso" alle migliaia 550 volte più vicine su 10.000 e il valore medio arrotondato è 5055 (superiore alla media originale di 55,5).

Se tutti e tre gli arrotondamenti vengono eseguiti per "metà arrotondata verso il basso", i risultati sono:

0     556
1000  1000
2000  1000
3000  1000
4000  1000
5000  1000
6000  1000
7000  1000
8000  1000
9000  1000
10000 444

Il risultato differisce da una singola "metà arrotondata verso il basso" alle migliaia 550 volte più vicine su 10.000 e il valore medio arrotondato è 4944 (troppo basso di 55,5).

Se tutti e tre gli arrotondamenti vengono eseguiti utilizzando "arrotondato a metà dispari", il risultato è:

0     445
1000  1111
2000  889
3000  1111
4000  889
5000  1111
6000  889
7000  1111
8000  889
9000  1111
10000 444

Il risultato differisce da una singola "metà dispari arrotondata" alle migliaia 550 volte più vicine su 10.000 e il valore medio arrotondato è 4999,5 (corretto).

Infine, se tutti e tre gli arrotondamenti vengono eseguiti utilizzando "metà arrotondata", i risultati sono:

0     546
1000  909
2000  1091
3000  909
4000  1091
5000  909
6000  1091
7000  909
8000  1091
9000  909
10000 1091

Il risultato differisce da una singola "metà arrotondata" alla migliaia più vicina 450 volte su 10.000 e il valore medio arrotondato è 4999,5 (corretto).

Penso che sia ovvio che arrotondare per metà e arrotondare per metà distorca i valori arrotondati, in modo che la media dei valori arrotondati non abbia più la stessa aspettativa della media dei valori originali e che "metà arrotondata pari" e "metà arrotondata dispari "rimuovi la distorsione trattando 5 in un modo per metà del tempo e nell'altro modo nell'altra metà. L'arrotondamento successivo moltiplica il pregiudizio.

La metà rotonda e la metà rotonda dispari introducono il proprio tipo di distorsione nella distribuzione: una propensione verso le cifre pari e dispari, rispettivamente. In entrambi i casi, ancora una volta, questo pregiudizio viene moltiplicato per arrotondamenti successivi, ma è peggio per il round dispari. Penso che la spiegazione in questo caso sia semplice: 5 è un numero dispari, quindi la metà rotonda dispari ha più risultati che terminano con 5 della metà rotonda pari - e quindi, più risultati che dovranno essere gestiti appositamente dal prossimo arrotondamento.

Quindi, delle quattro scelte, solo due sono imparziali, e delle due scelte imparziali, la metà rotonda fornisce anche la distribuzione meglio comportata quando soggetta a ripetuti arrotondamenti.


55

Si chiama arrotondamento del banchiere. L'idea è di ridurre al minimo l'errore cumulativo di molte operazioni di arrotondamento.

Diciamo che hai sempre arrotondato .5 in basso. Pensa a tutti quei piccoli pagamenti di interessi, la banca intascando mezzo centesimo ogni volta ...

Diciamo che hai sempre arrotondato .5 in su. La contabilità urlerà perché stai pagando più interessi di quanto dovresti.


6
ma perché pari e non dispari?
maniaco del cricchetto

17
@ratchetfreak - numeri così piccoli arrotondati a, non lontani da, zero. A parte questo, è arbitrario - deve essere qualcosa.
Jonathan Dursi,

15
@ratchetfreak: cosa succederebbe se inizi con il numero 1, dividi per 2 e torni a dispari? Si ottiene 0,5 arrotondato a 1. Cosa succede se si divide nuovamente per 2? Si ottiene 0,5 arrotondato a 1. E così via. Non diventa mai zero.
gnasher729,

13
Penso che anche i numeri pari debbano essere preferiti ai numeri dispari perché riducono la probabilità della necessità di successivi dilemmi di arrotondamento. La divisione per (esattamente) due è un'operazione piuttosto frequente nella pratica.
Marc van Leeuwen,

4
È importante anche nelle statistiche. Se ogni membro frazionario di un set di dati viene arrotondato per eccesso, le statistiche descrittive come la media saranno (leggermente) più alte di se fossero arrotondate per difetto. L'Introduzione all'epidemiologia di Kenneth Rothman menziona specificamente sempre il arrotondamento del terminale .5 (o .005, o qualsiasi altra cosa) in quanto inclina gradualmente un database verso numeri più alti, ma arrotondare sempre a un numero pari o dispari non distorce la media.
Will Murphy,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.