""/> "">
Maison > Article > développement back-end > Pourquoi Python arrondit-il à moitié les nombres pairs ?
Arrondi des nombres à demi-flottants
La fonction round() de Python présente un comportement inhabituel lors de l'arrondi des nombres à demi-flottants qui peut prêter à confusion. Examinons ce comportement plus en détail.
<code class="python">for i in range(1, 15, 2): n = i / 2 print(n, "=>", round(n))</code>
Ce code s'imprime :
0.5 => 0 1.5 => 2 2.5 => 2 3.5 => 4 4.5 => 4 5.5 => 6 6.5 => 6
Contrairement aux attentes, les valeurs flottantes ne sont pas toujours arrondies. Au lieu de cela, ils sont arrondis au nombre pair le plus proche, même pour les demi-valeurs. Ce comportement est documenté dans la documentation Python sous "Numeric Types":
"round(x[, n])
x arrondi à n chiffres, arrondi à la moitié au pair. Si n est omis , la valeur par défaut est 0."
Cet arrondi au nombre pair le plus proche, connu sous le nom d'"arrondi des banquiers", vise à atténuer les erreurs d'arrondi en faisant la moyenne des arrondis.
Pour mieux contrôler comportement d'arrondi, le module décimal offre une approche plus flexible. L'exemple suivant montre comment arrondir à partir de la moitié à l'aide du module décimal :
<code class="python">from decimal import localcontext, Decimal, ROUND_HALF_UP with localcontext() as ctx: ctx.rounding = ROUND_HALF_UP for i in range(1, 15, 2): n = Decimal(i) / 2 print(n, '=>', n.to_integral_value())</code>
Sortie :
0.5 => 1 1.5 => 2 2.5 => 3 3.5 => 4 4.5 => 5 5.5 => 6 6.5 => 7
En ajustant le paramètre d'arrondi dans localcontext(), vous pouvez personnaliser l'arrondi comportement selon les besoins, garantissant des résultats précis pour des scénarios d'arrondi spécifiques.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!