213 votes

Existe-t-il un équivalent plafond de l'opérateur // en Python ?

J'ai découvert le // en Python qui, en Python 3, fait la division avec le plancher.

Existe-t-il un opérateur qui divise avec ceil à la place ? (Je connais l'opérateur / qui, dans Python 3, effectue la division en virgule flottante).

8voto

casevh Points 4596

Notez que math.ceil est limité à 53 bits de précision. Si vous travaillez avec de grands entiers, vous risquez de ne pas obtenir des résultats exacts.

El gmpy2 La bibliothèque fournit un c_div qui utilise l'arrondi au plafond.

Disclaimer : Je maintiens gmpy2.

-1voto

Arpan Saini Points 383

Si vous voulez celler jusqu'à un multiple d'un nombre, cela fonctionne comme nous avons Math.celling dans excel.

def excel_celling(number=None, multiple_off=None):
    quotient = number // multiple_off
    reminder = number % multiple_off
    celling_value = quotient * multiple_off + (multiple_off, 0)[reminder==0]
    return int(celling_value)

assert excel_celling(99.99, 100) == 100, "True"
print(excel_celling(99.99, 100) , 100)
assert excel_celling(1, 100) == 100, "True"
print(excel_celling(1, 100),100)
assert excel_celling(99, 100) == 100, "True"
print(excel_celling(99, 100),100)
assert excel_celling(90, 100) == 100, "True"
print(excel_celling(90, 100),100)
assert excel_celling(101, 100) == 200, "True"
print(excel_celling(101, 100),200)
assert excel_celling(199, 100) == 200, "True"
print(excel_celling(199, 100),200)
assert excel_celling(199.99, 100) == 200, "True"
print(excel_celling(199.99, 100),200)
assert excel_celling(200, 100) == 200, "True"
print(excel_celling(200, 100),200)

Résultats

100 100

100 100

100 100

100 100

200 200

200 200

200 200

200 200

-12voto

A.L. Verminburger Points 114

Une solution simple : a // b + 1

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