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?
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
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.
La fonction round () en Python prend deux paramètres:
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.