Pourquoi ne Convertir.ToInt32 (ronds) le plus proche, même numéro, à la place de l'entier le plus proche?

À la recherche, à la documentation msdn pour Convert.ToInt32() il déclare:

Si la valeur est à mi-chemin entre deux nombres entiers, le même nombre est
retourné, qui est, à 4.5 est converti à 4 et 5.5 est converti à 6.

http://msdn.microsoft.com/en-us/library/ffdk7eyz.aspx

Pourquoi est-ce?

Assurément, il serait plus logique d'arrondir au nombre entier le plus proche, ne serait-il pas? Si oui, 4.5 deviendrait 5 et 5.5 deviendrait 6, qui semble être plus intuitive.

  • Si vous voulez le comportement spécifique de l'utilisation de la Math.Round méthode. Bien sûr, Convertir.ToInt32() ne l'utilisent déjà cette méthode avec le comportement décrit. Il a à voir avec des moyennes, vous convertir et ajouter les 6 numéros, et la moitié d'entre eux sont arrondis vers le bas et l'autre moitié sont roudned au maximum, vous obtenez un nombre plus précise, puis, si tout a été arrondis vers le haut ou arrondi vers le bas.
  • J'apprécie, je suis juste curieux de savoir pourquoi a même une préférence plus étrange dans tout scénario
  • C'est juste une méthode existante. Il n'y a aucune raison pourquoi les banquiers arrondissement ne pouvais pas avoir favorisé va bizarres à la place. L' .NET de la mise en œuvre est tout simplement piggy-backing hors de quelque chose qui existe déjà.
  • en.wikipedia.org/wiki/Bankers_rounding#Round_half_to_even
  • Quand vous dites "Assurément, il serait plus logique d'arrondir au nombre entier le plus proche?", tout le problème est qu'il y a deux 'l'entier le plus proche de nombres...
  • Retourne l'entier le plus proche, mais il y a deux de ceux-ci.
  • La réponse simple à votre question, il serait moins précise. Même si elles ont été à tour la plus proche bizarre, que serait seuil impliquer l'arrondissement jusqu'à la moitié du temps et de l'arrondi vers le bas la moitié du temps. Votre question à partir d'une logique de point de vue ne fait pas de sens. Quand j'ai parlé de la Convertir.ToInt32 à l'aide de "cette méthode", je parlais du comportement décrit dans la documentation de ne pas Math.Round. Oui je downvoted à cette question, il semble que vous voulez avoir une discussion sur les raisons pour lesquelles la méthode fonctionne de cette façon, ce qui semble sorte de inutile d'en débattre.
  • Cheers, je pense que j'ai passé tellement de temps à voir ".5" les chiffres étant arrondis, que j'ai oublié son n'en fait plus proche du nombre entier haha.
  • Je pense que cela est souvent dû à la plupart des écoles (au moins en Angleterre) seulement l'enseignement de l'arrondissement où .5 signifie "aller". Je suis tombé dans la "ce que le diable se passe ici?" piège avec les Banquiers de l'arrondissement.
  • Il est également enseigné aux états-unis. Si le nombre est inférieur à 5 autour de vous, si son ci-dessus .5 alors vous arrondir. Si son .5 exactement alors entièrement à vous. Toujours arrondissement est peuvent entraîner un certain nombre qui n'est pas tout à fait exacte
  • Dans ce cas, il est différent de ce que j'ai dit. On nous a appris que la décision de .5 était à "monter" par défaut pour des raisons de cohérence.
  • pour vous" semble un peu blasé
  • J'ai voté en faveur de la réouverture, comme cela semble une très bonne question. C'est à propos d'une raison pour le comportement observé, qui est responsable.

InformationsquelleAutor Curt | 2012-07-11