-1
votes

Comment rond nombre à 10, 100, 1000, 10000, 100000

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


2 commentaires

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)) )


Oui, tu as raison. mais j'ai eu la réponse que je veux ici, une voie python naïve


4 Réponses :


6
votes

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. xxx


4 commentaires

rond_base_10 (11) = 10 qui n'est pas correct, il devrait être 100.


Vous devez utiliser math.ceil à 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 ....



0
votes

Une autre option (sans math ): xxx


0 commentaires

0
votes

Vous pouvez utiliser l'approche naïve: xxx

vous auriez besoin top = 1L dans python2, mais les entiers sont longs par défaut dans Python3.


1 commentaires

C'est ce que je cherche



0
votes
def roundup(n):
    if n < 0:
        return 0
    size = len(str(n))
    return int('1'.ljust(size+1, '0'))

0 commentaires