Python format de la taille de l'application (la conversion de B en KO, MO, GO, TO)

Je suis en train d'écrire une application pour convertir des octets ko mo go à la tuberculose.
Voici ce que j'ai à ce jour:

def size_format(b):
    if b < 1000:
              return '%i' % b + 'B'
    elif 1000 <= b < 1000000:
        return '%.1f' % float(b/1000) + 'KB'
    elif 1000000 <= b < 1000000000:
        return '%.1f' % float(b/1000000) + 'MB'
    elif 1000000000 <= b < 1000000000000:
        return '%.1f' % float(b/1000000000) + 'GB'
    elif 1000000000000 <= b:
        return '%.1f' % float(b/1000000000000) + 'TB'

Le problème c'est que quand j'essaie de l'application je reçois tout ce qui est après la virgule zéro.
exemple
size_format(623) rendements
'623B'
mais avec size_format(6200),
au lieu d'être "6.2 kb'
Je me fais '6.0 kb'.
Des idées pourquoi?

Un indice pour l'avenir: lorsque vous collez le dans le code, sélectionnez tout et utiliser le {} bouton pour les mettre en forme dans le code.

OriginalL'auteur user1687654 | 2012-09-21