web-dev-qa-db-fra.com

round () renvoie un résultat différent en fonction du nombre d'arguments

En utilisant la fonction round(), j’ai remarqué que j’obtiens deux résultats différents selon que je ne choisis pas explicitement le nombre de décimales à inclure ou que je choisisse le nombre 0.

x = 4.1
print(round(x))
print(round(x, 0))

Il imprime ce qui suit:

4
4.0

Quelle est la différence?

36
Peter Hofer

La fonction round renvoie un entier si le second argument n'est pas spécifié, sinon la valeur de retour a le même type que celui du premier argument:

>>> help(round)
Help on built-in function round in module builtins:

round(number, ndigits=None)
    Round a number to a given precision in decimal digits.

    The return value is an integer if ndigits is omitted or None. Otherwise
    the return value has the same type as the number. ndigits may be negative.

Donc, si les arguments passés sont un entier et un zéro, la valeur de retour sera un type entier:

>>> round(100, 0)
100
>>> round(100, 1)
100

Par souci d'exhaustivité:

Les nombres négatifs sont utilisés pour arrondir avant la décimale

>>> round(124638, -2)
124600
>>> round(15432.346, -2)
15400.0
38
Aniket Navlur

Lorsque vous spécifiez le nombre de décimales, même si ce nombre est égal à 0, vous appelez la version de la méthode qui renvoie un float. Il est donc normal que vous obteniez ce résultat. 

13
Osuman AAA

La fonction round () en Python prend deux paramètres:

  1. nombre - nombre à arrondir
  2. nombre de chiffres (facultatif) - nombre de chiffres jusqu'à lequel le nombre indiqué doit être arrondi.

Lorsque vous utilisez le deuxième paramètre, Python convertit automatiquement le type de données de la valeur de retour en float. Si vous n'utilisez pas le deuxième paramètre facultatif, le type de données reste un entier.

Par conséquent, il est 4.0 lorsque le paramètre est passé et 4 quand il ne l’est pas.

0
codelyzer