2016-11-09 2 views
0

J'essaie de faire quelques calculs en python. Voici mon code:Comment multiplier un nombre à virgule flottante par un nombre décimal et obtenir un nombre à virgule flottante

if(height.is_integer()): 
    height = int(height) 
meters = height * .3048 
in_m = "%d meters" % meters 
print "You are also also %s tall (let's hope it doesn't round)." % (in_m) 

Comme vous pouvez le voir, je suis en train de faire la hauteur tout montant défini par l'utilisateur, puis multiplier par un nombre décimal pour obtenir un nombre à virgule flottante défini comme mètres. Le problème est que lorsque je saisis un nombre comme 6 pour la hauteur ou 5,25, il arrondit à un mètre. Quelqu'un peut-il m'aider?

Répondre

0

in_m = "%d meters" % meters

il arrondit juste en bas à un mètre.

Votre conversion à l'aide de %d, appliquée à une valeur numérique, imprime uniquement sa partie entière. Pour imprimer une valeur flottante, vous devez utiliser %f, %e ou %g; pour votre besoin, %g semble être le meilleur défaut.

+0

Merci, cela a vraiment aidé @Netch. J'étais tellement confus. J'ai une autre question. Comment se fait-il que cela n'a pas d'importance dans certains cas si je l'utilise comme 'lbs = raw_input() lbs = float (lbs) si (lbs.is_integer()): \t height = int (hauteur) your_weight =" " votre_pièce ="% d livres% s "% (lbs, votre_poids) kg = lbs * .453592 print" Dans le système métrique qui serait% s "% (in_kg)', ce qui me donne un bon nombre en virgule flottante ? – Jacusaurus

+0

@Jacusaurus Votre code est plein de mélanger des noms de variables et des méthodes inconnues, comme 'is_integer'. S'il vous plaît faites-le au moins ne pas lever une exception. En outre, le code mis à jour doit être ajouté à la question (mieux vaut ne pas remplacer le code initial), car le formatage dans les commentaires est trop spartiate. – Netch