Est-il possible d'exécuter un eval code> -comme que ses valeurs contraint à virgule flottante? J'espère
eval('1/3')
5 Réponses :
question est vraiment: comment puis-je faire Python division à virgule flottante par défaut. La réponse est:
from __future__ import division
En fait non, je le ferais alors si possible, sur juste pour l'évaluation de l'expression saisie. Mais, ne pas être en mesure de le faire, cela fonctionnera très bien. Merci!
Les paramètres __ code> sont par module afin que vous puissiez le faire dans un module séparé, mais Ignacio est meilleur.
saisissez le drapeau du compilateur pour (note de MH) strong> Cela a l'avantage supplémentaire de ne pas changer l'opération de division mondiale, ce qui pourrait avoir des effets secondaires inattendus. (fin de fin) strong> p> __ futur __. Division code>, transmettez-le et votre code à
compile () code>, puis exécutez
eval () code> sur le Objet de code retourné.
C'est parfait, exactement ce dont j'ai besoin. En particulier, cela ne change pas l'environnement mondial, ce qui pourrait éventuellement avoir des effets secondaires inattendus dans d'autres parties du programme. Je mettrai à jour votre exemple pour montrer explicitement l'importation et l'utilisation du drapeau du compilateur. Merci!!
Oh, c'est mignon, vient de voir ça. :-)
Puis-je limiter les endroits décimaux à deux?
@JIM: No.
Le problème est qu'il n'y a pas de valeur de flotteur dans l'expression. P>
Essayez ceci eval ('1 / 3.0') code> p>
Ceci fonctionne par défaut sur Python3 pour python2, vous pouvez passer -qnew code> sur la ligne de commande (qui est équivalent à
de la division d'importation __future__ code> p>
basé sur la réponse de Lafada, si vous obtenez la chaîne d'entrée d'une variable:
Échouerait sur des expressions telles que string = (1/3) code>.
L'expression string = (1/3) code> ne crée pas de chaîne. Il calcule 1/3, produit un résultat entier de 0, puis stocke le résultat dans une variable appelée chaîne. Alors, alors eval (String + '. 0') tentera de concaténer le zéro entier avec une chaîne
'. 0' code>. Cela fonctionnera si votre entrée est une chaîne réelle qui n'a pas été évaluée à un entier à l'avance.
En Python ... Version ...?
ouvert aux méthodes dans n'importe quelle version de Python.