Je veux une fonction qui arrondira le nombre à 10 s'il est inférieur à 10, rond à 100 s'il est compris entre 10 et 1000, etc.
Cela aidera les problèmes de concaténation du nombre, donc je ne le fais pas doivent transformer le numéro à Str and Back. P>
def roundup(n): if n < 0: return 0 if n < 10: return 10 if n < 100: return 100 if n < 1000: return 1000 if n < 10000: return 10000
4 Réponses :
Ceci est plus un problème de mathématiques qu'un problème spécifique à Python, mais vous prenez effectivement un étage du journal d'un numéro.
rond_base_10 (11) = 10 code> qui n'est pas correct, il devrait être 100.
Vous devez utiliser math.ceil code> à la place, et cela fonctionnera. Aussi, doit s'occuper du cas où x = 0
Merci pour les commentaires. J'ai ajouté CEIL modifié et ajouté le boîtier N <0
Toujours besoin de cas pour x <1 et si x == 10, la réponse doit être de 100, pas 10, etc ....
Une autre option (sans math code>):
Vous pouvez utiliser l'approche naïve: vous auriez besoin top = 1L code> dans python2, mais les entiers sont longs par défaut dans Python3. P> p>
C'est ce que je cherche
def roundup(n): if n < 0: return 0 size = len(str(n)) return int('1'.ljust(size+1, '0'))
Dupliqué possible de arrondir à une puissance de 10 . En réalité, il s'agit de la mauvaise cible de dupe, mais la logique est la même. (
10 ** plancher (log10 (x)) code>)
Oui, tu as raison. mais j'ai eu la réponse que je veux ici, une voie python naïve