Python: eval (), das Werte in Gleitkommawerte umwandelt?

7

Gibt es eine Möglichkeit, eine eval -like-Funktion auszuführen, die ihre Werte in Fließkomma-Werte umwandelt? Ich hoffe auf

%Vor%

und lassen Sie den Fließkommawert .333333 lieber als den Ganzzahlwert 0 zurückgeben.

    
Mark Harrison 23.02.2012, 05:23
quelle

5 Antworten

15

Nehmen Sie das Compiler-Flag für __future__.division , übergeben Sie es und Ihren Code an compile() , und führen Sie eval() für das zurückgegebene Code-Objekt aus.

(Anmerkung von mh) Dies hat den zusätzlichen Vorteil, dass die Divisionsoperation global nicht geändert wird, was zu unerwarteten Nebeneffekten führen kann. (Endnote)

%Vor%     
Ignacio Vazquez-Abrams 23.02.2012, 05:26
quelle
6

Sie stellen wirklich die Frage: Wie kann ich Python dazu bringen, standardmäßig Gleitkommazahlen zu machen? Die Antwort ist:

%Vor%     
kindall 23.02.2012 05:26
quelle
2

Das Problem ist, dass es keinen Gleitkommawert in Ausdruck gibt.

probiere dieses eval('1/3.0')

aus     
Nilesh 23.02.2012 05:26
quelle
2

Dies funktioniert standardmäßig auf Python3

%Vor%

Für Python2 können Sie -Qnew in der Befehlszeile übergeben (was äquivalent zu from __future__ import division

ist) %Vor%     
John La Rooy 23.02.2012 05:43
quelle
1

Basierend auf Lafadas Antwort erhalten Sie die Eingabezeichenfolge von einer Variablen:

%Vor%     
Knowbody 26.04.2016 00:21
quelle

Tags und Links