Quelqu'un peut-il expliquer cela (directement à partir de l docs - c'est moi qui souligne) :
math.ceil(x) Retourne le plafond de x comme un flotteur le plus petit entier valeur supérieure ou égale à x.
math.floor(x) Retourne le plancher de x comme un flotteur le plus grand entier valeur inférieure ou égale à x.
Pourquoi .ceil
et .floor
renvoient des flottants alors qu'ils sont par définition censés calculer des entiers ?
EDIT :
Eh bien, il y a de très bons arguments pour expliquer pourquoi ils devrait et je commençais à m'habituer à l'idée, quand @jcollado a souligné qu'en fait, ils faire retourner des ints en Python 3...
1 votes
Je pense que c'est parce que x est un flottant et non un entier, mais comme je ne connais pas ou n'utilise pas Python, je vais laisser quelqu'un d'autre répondre de façon plus définitive :).
7 votes
@Adam- mais le but des opérations plafond/plancher est d'arrondir les flottants aux entiers !
2 votes
Cela m'a également irrité la première fois que je l'ai rencontré, car cela semble tout simplement faux. Au moins, ce n'est pas trop difficile à utiliser.
int(floor(n))
.2 votes
Ironiquement (puisque les flottants ont été utilisés pour éviter les débordements), la valeur renvoyée par floor/ceil n'a aucun sens dans les chiffres inférieurs à cause de la représentation en flottant, bien avant qu'un int de 64 bits ne déborde. (Ce n'était pas vrai à l'époque des 32 bits).