Les langages de programmation comme Scheme (R5RS) et Python ( voir cette question ) arrondissent vers l'entier pair le plus proche lorsque la valeur est exactement entre les entiers environnants.
Quel est le raisonnement derrière cela?
Existe-t-il une idée mathématique qui facilite le raisonnement des calculs suivants?
(R5RS fait référence à la norme à virgule flottante IEEE comme source de ce comportement.)
Il y a quelque temps, j'ai construit un programme de test pour l'arrondi successif, car il s'agit essentiellement du pire test de stress pour un algorithme d'arrondi.
Pour chaque nombre compris entre 0 et 9 999, il arrondit d'abord au 10 le plus proche, puis au 100 le plus proche, puis au 1000 le plus proche. (Vous pourriez aussi penser à cela comme 10 000 points en [0,1) étant arrondi à 3 endroits, puis à 2, puis à 1.) Cet ensemble de nombres a une valeur moyenne de 4999,5.
Si les trois arrondis sont effectués en utilisant la méthode "arrondir à la moitié", les résultats sont les suivants (la première colonne est le résultat de l'arrondi, la deuxième colonne indique combien de nombreux nombres arrondis à ce résultat - c'est-à-dire qu'il s'agit d'un histogramme).
0 445
1000 1000
2000 1000
3000 1000
4000 1000
5000 1000
6000 1000
7000 1000
8000 1000
9000 1000
10000 555
Le résultat diffère d'une seule "demi-arrondie" au millier 550 fois le plus proche sur 10 000 et la valeur arrondie moyenne est de 5055 (supérieure à la moyenne d'origine de 55,5).
Si les trois arrondis sont effectués par "arrondir la moitié vers le bas", les résultats sont les suivants:
0 556
1000 1000
2000 1000
3000 1000
4000 1000
5000 1000
6000 1000
7000 1000
8000 1000
9000 1000
10000 444
Le résultat diffère d'une seule "moitié arrondie vers le bas" au millier 550 fois le plus proche sur 10 000 et la valeur moyenne arrondie est de 4944 (trop faible de 55,5).
Si les trois arrondis sont effectués en utilisant "arrondi à moitié impair", le résultat est:
0 445
1000 1111
2000 889
3000 1111
4000 889
5000 1111
6000 889
7000 1111
8000 889
9000 1111
10000 444
Le résultat diffère d'un simple "demi-impair rond" au millier 550 fois le plus proche sur 10 000 et la valeur arrondie moyenne est de 4999,5 (correcte).
Enfin, si les trois arrondis sont effectués en utilisant "arrondir la moitié même", les résultats sont les suivants:
0 546
1000 909
2000 1091
3000 909
4000 1091
5000 909
6000 1091
7000 909
8000 1091
9000 909
10000 1091
Le résultat diffère d'une seule "moitié ronde égale" au millier le plus proche 45 fois sur 10 000 et la valeur arrondie moyenne est 4999,5 (correcte).
Je pense qu'il est évident que arrondir la moitié vers le haut et arrondir la moitié vers le bas biaisent les valeurs arrondies, de sorte que la moyenne des valeurs arrondies n'a plus la même attente que la moyenne des valeurs d'origine, et que "la moitié ronde paire" et "la moitié ronde impaire "supprimer le biais en traitant 5 dans un sens la moitié du temps et dans l'autre sens l'autre moitié. L'arrondi successif multiplie le biais.
La moitié ronde paire et la moitié ronde impaire introduisent leur propre type de biais dans la distribution: un biais vers les chiffres pairs et impairs, respectivement. Dans les deux cas, encore une fois, ce biais est multiplié par les arrondis successifs, mais il est pire pour les arrondis à moitié impairs. Je pense que l'explication dans ce cas est simple: 5 est un nombre impair, donc la moitié ronde impaire a plus de résultats se terminant par 5 que la moitié ronde même - et donc, plus de résultats qui devront être traités spécialement par le arrondi suivant .
Donc, de toute façon, sur les quatre choix, seuls deux sont sans biais, et parmi les deux choix sans biais, la moitié arrondie donne même la distribution la mieux comportée lorsqu'elle est soumise à des arrondis répétés.
C'est ce qu'on appelle l'arrondissement bancaire. L'idée est de minimiser l'erreur cumulative de nombreuses opérations d'arrondi.
Disons que vous arrondissez toujours 0,5 vers le bas. Pensez à tous ces petits paiements d'intérêts, la banque empochant un demi-cent à chaque fois ...
Disons que vous arrondissez toujours 0,5. La comptabilité va crier parce que vous payez plus d'intérêts que vous ne le devriez.