Y at-il une fonction intégrée qui peut arrondir comme ceci:
10 -> 10
12 -> 10
13 -> 15
14 -> 15
16 -> 15
18 -> 20
Y at-il une fonction intégrée qui peut arrondir comme ceci:
10 -> 10
12 -> 10
13 -> 15
14 -> 15
16 -> 15
18 -> 20
Je ne sais pas d'une fonction standard de Python, mais cela fonctionne pour moi:
def myround(x, base=5):
return int(base * round(float(x)/base))
Il est facile de voir pourquoi les travaux ci-dessus. Vous voulez vous assurer que votre nombre est divisé par 5 est un entier, arrondie. Donc, nous allons d'abord faire exactement cela (round(float(x)/5)
), et alors, puisque nous avons divisé par 5, on multiplie par 5. La finale de la conversion en int
est parce qu' round()
renvoie une valeur à virgule flottante en Python.
J'ai fait la fonction plus générique, en lui donnant un base
paramètre, par défaut 5.
Pour arrondir à des valeurs non entières, telles que 0,05:
def myround(x, prec=2, base=.05):
return round(base * round(float(x)/base),prec)
J'ai trouvé cela utile car je pouvais juste faire une recherche et remplacer dans mon code pour changer "round (") "en" myround ("), sans avoir à changer les valeurs des paramètres.
round (x [, n]): les valeurs sont arrondies au multiple de 10 le plus proche de la puissance moins n. Donc si n est négatif ...
def round5(x):
return int(round(x*2, -1)) / 2
Comme 10 = 5 * 2, vous pouvez utiliser la division entière et la multiplication avec 2 plutôt que la division flottante et la multiplication avec 5.0. Pas que ça compte beaucoup, à moins que tu aimes changer un peu
def round5(x):
return int(round(x << 1, -1)) >> 1
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.