441 votes

Comment arrondissez-vous un nombre en Python?

Ce problème me tue. Comment arrondit-on un nombre UP en Python?

J'ai essayé le numéro (nombre) mais le nombre est arrondi. Exemple:

 round(2.3) = 2.0 and not 3, what I would like
 

Le j'ai essayé int (nombre + .5) mais il arrondit à nouveau le nombre! Exemple:

 int(2.3 + .5) = 2
 

Puis j'ai essayé le tour (numéro +5) mais cela ne fonctionnera pas dans les cas extrêmes. Exemple:

 WAIT! THIS WORKED!
 

S'il vous plaît donnez votre avis.

786voto

Steve Tjoa Points 15116

La fonction ceil (plafond):

 import math
print math.ceil(4.2)
 

155voto

TrophyGeek Points 908

Question intéressante de Python 2.x à garder à l’esprit:

 >>> import math
>>> math.ceil(4500/1000)
4.0
>>> math.ceil(4500/1000.0)
5.0
 

Le problème est que la division de deux ints en python produit un autre int et que celui-ci est arrondi avant l'appel au plafond. Vous devez donner une valeur à un flottant (ou un cast) pour obtenir un résultat correct.

En javascript, le même code produit un résultat différent:

 console.log(Math.ceil(4500/1000));
5
 

152voto

user3074620 Points 103

Je sais que cette réponse concerne une question posée il y a un moment, mais si vous ne voulez pas importer de maths et que vous voulez simplement vous arrêter, cela fonctionne pour moi.

 >>> (21 / 5)
4
>>> (21 / 5) + (21 % 5 > 0)
5
 

La première partie devient 4 et la deuxième partie est évaluée à "True" s'il reste un reste, True = 1; False = 0. Donc, s'il n'y a pas de reste, alors il reste le même entier, mais s'il reste un reste, il ajoute 1.

52voto

Lisa Points 568

Vous pourriez aussi aimer numpy:

 >>> import numpy as np
>>> np.ceil(2.3)
3.0
 

Je ne dis pas que c'est mieux que les maths, mais si vous utilisiez déjà numpy à d'autres fins, vous pouvez garder votre code cohérent.

En tout cas, juste un détail que j'ai rencontré. J'utilise beaucoup numpy et j'ai été surpris de ne pas avoir été mentionné, mais bien sûr, la réponse acceptée fonctionne parfaitement.

28voto

KennyTM Points 232647
>>> import math
>>> math.ceil(5.4)
6.0

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X