Pourquoi certaines langues arrondissent-elles au nombre entier EVEN le plus proche?

44

Des langages de programmation tels que Scheme (R5RS) et Python ( voir cette question ) s’arrondissent vers l’entier pair le plus proche lorsque la valeur se situe exactement entre les entiers environnants.

Quel est le raisonnement derrière cela?
Existe-t-il une idée mathématique permettant de raisonner plus facilement sur les calculs suivants?

(R5RS fait référence au standard de virgule flottante IEEE en tant que source de ce problème.)

Profpatsch
la source
4
Avez-vous lu floating-point-gui.de ?
Basile Starynkevitch
1
IEEE autorise plusieurs modes d'arrondi. C'est l'un d'eux. Certaines langues permettent même de changer le mode d'arrondi lors de l'exécution.
Tobias Brandt
5
Vous voudrez peut-être lire la section consacrée au bris d'égalité pour arrondir sur Wikipedia et le raisonnement de l'association derrière chacune d'entre elles.
3
Double site à dupliquer: Mathematica.SE: Pourquoi arrondir à des entiers égaux?
apsillers
1
"Bien que l'exactitude soit un sujet de discussion avec des nombres à virgule flottante" Ce n'est pas un sujet de discussion, c'est spécifié très précisément. Par exemple, les nombres pertinents ici (comme 42.5) peuvent être représentés exactement, car ce sont des fractions binaires. Ce qui ne peut pas être représenté exactement sont les fractions autres que binaires, y compris les fractions décimales.
svick

Réponses:

39

Il y a quelque temps, j'ai construit un programme de test pour l'arrondissement successif, car il s'agit essentiellement d'un test de contrainte dans le cas le plus défavorable d'un algorithme d'arrondi.

Pour chaque nombre compris entre 0 et 9 999, il arrondit d'abord à 10, puis à 100, puis à 1000. (Vous pouvez également penser que cela correspond à 10 000 points dans [0,1], étant arrondi à 3, puis à 2, puis à 1.) Cet ensemble de nombres a une valeur moyenne de 4999,5.

Si les trois arrondis sont effectués à l'aide de la méthode "arrondir la moitié", les résultats sont les suivants (la première colonne correspond au résultat de l'arrondi, la deuxième colonne indique le nombre de chiffres arrondis à ce résultat - c'est-à-dire 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'un simple "arrondi de moitié" au millier de fois 550 fois sur 10 000 et la valeur arrondie moyenne est 5055 (supérieure à la moyenne initiale de 55,5).

Si les trois arrondis sont effectués par "arrondir la moitié", 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'un simple "demi-tour" au millier de fois près de 550 fois sur 10 000 et la et la valeur arrondie moyenne est 4944 (trop faible de 55,5).

Si les trois arrondis sont effectués en utilisant "round half odd", le résultat est le suivant:

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-tour impair" au mille 550 fois près de 10 000 et la valeur arrondie moyenne est 4999,5 (correct).

Enfin, si les trois arrondis sont effectués en utilisant "demi-tour 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'un simple "demi-tour même" au millier de fois près 450 fois sur 10 000 et la valeur arrondie moyenne est 4999,5 (correct).

Je pense qu’il est évident que les valeurs arrondies sont biaisées de manière à ce que la moyenne des valeurs arrondies n’ait plus les mêmes attentes que la moyenne des valeurs initiales, et que les expressions "arrondi moitié égal" et "arrondi moitié impair "Supprimez le biais en traitant 5 fois la moitié du temps dans l’autre sens et l’autre moitié. Les arrondis successifs multiplient les biais.

Les parties arrondie moitié pair et moitié impair 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 arrondi, mais il est pire pour le demi-tour impair. Je pense que l'explication est simple dans ce cas: 5 est un nombre impair, donc demi arrondi a plus de résultats se terminant par 5 que demi-tour pair - et donc plus de résultats qui devront être traités spécialement lors du prochain arrondi.

Quoi qu’il en soit, sur les quatre choix proposés, deux seulement sont sans biais, et sur les deux, la moitié arrondie donne même la distribution la mieux comportée lorsqu’elle est arrondie.

Hobbs
la source
55

C'est ce qu'on appelle l'arrondi du banquier. L'idée est de minimiser l'erreur cumulative de nombreuses opérations d'arrondi.

Disons que vous avez toujours arrondi 0,5. Pensez à tous ces petits paiements d'intérêts, la banque empochant un demi-cent à chaque fois ...

Disons que vous avez toujours arrondi .5. La comptabilité va crier parce que vous payez plus d'intérêts que vous n'auriez dû.

Loren Pechtel
la source
6
mais pourquoi même et pas étrange?
Ratchet Freak
17
@ratchetfreak - si petit nombre arrondit à, pas loin de zéro. Autre que cela, c'est arbitraire - doit être quelque chose.
Jonathan Dursi
15
@ratchetfreak: Que se passerait-il si vous commenciez par le nombre 1, divisez par 2 et arrondissez à impair? Vous obtenez 0,5 arrondi à 1. Et si vous divisez encore par 2? Vous obtenez 0,5 arrondi à 1. Et ainsi de suite. Ne devient jamais zéro.
gnasher729
13
Je pense que les nombres pairs sont également préférables aux nombres impairs , car ils réduisent la probabilité de la nécessité de la suite des dilemmes d'arrondi. La division par (exactement) deux est une opération assez fréquente dans la pratique.
Marc van Leeuwen
4
C'est important aussi dans les statistiques. Si chaque membre fractionnaire d'un ensemble de données est arrondi, les statistiques descriptives telles que la moyenne seront (légèrement) plus élevées que si elles étaient arrondies. L'introduction à l'épidémiologie de Kenneth Rothman mentionne spécifiquement le fait d'arrondir toujours le terminal .5 (ou .005, ou peu importe) de manière à biaiser progressivement une base de données vers des nombres plus élevés, mais toujours arrondir à un nombre pair ou impair ne biaise pas la moyenne.
Will Murphy