Ce que je suis en train d'accomplirLa façon la plus pythonique au pad un flotteur gauche de la virgule
-12.345 -> -012.345
Où gauche de décimales peut être -999-> 999 (pour mes besoins spécifiques) et n-montant de chiffres décimaux
je suis venu avec deux méthodes pour ce faire:
def pad(num, pad):
pad = pow(10,pad)
if num > 0:
return "%s" % str(num + pad)[1:]
else:
return "-%s" % str(num - pad)[2:]
def pad(num, pad):
import math
mag = 1 + int(math.log10(abs(num)))
sz = len(str(num))
return str(num).zfill(pad+sz-mag)
mais cela semble plutôt obtus pour être python. J'ai vu une question similaire précédente, mais n'a pas aimé la réponse ...
>>> "%06.2f"%3.3
'003.30'
car il suppose que vous savez déjà où votre point décimal est et le nombre de chiffres décimaux vous avez.
Cela semble une situation commune, donc est-il un meilleur/plus propre/simple fncall existant, chemin à parcourir à ce sujet dans Python 2.7?
je crois [ '' 'str.format()' ''] (https://docs.python.org/2/library/string.html#formatspec) est ce que vous voulez – wnnmaw
http://stackoverflow.com/questions/17118071/python-add-leading-zeroes-using-str-format ressemble à ça fonctionne bien avec ints mais pas avec les flottants puisque ma largeur est variable en fonction de la quantité de chiffres décimaux, donc de ce que je peux dire, je serais encore besoin de compter le nombre de chiffres décimaux j'ai: \ – pyInTheSky
@pyInTheSky: qu'entendez-vous * quantité de chiffres décimaux *? Les flotteurs sont des * approximations *, vous finissez invariablement par arrondir * de toute façon *. '-12.345' n'est pas * exactement *' -12.345' non plus, par exemple. 'format (-12.345, '.53f')'> ''-12.34500000000000063948846218409016728401184082031250000''. –