2017-04-07 1 views
1

Ich versuche, die Ausgabe einer Lösung Bewertung, die Einheiten daran angeschlossen hat.Runde Sympy Mul mit Einheiten

Zum Beispiel:

solve(Eq(x, 22/7 * seconds), x)[0] 

Ausgänge:

3.14285714285714*s 

Gibt es eine Möglichkeit, es zu 3.14*s abzurunden, während die s zu halten?

+0

Können Sie das näher erläutern, warum diese benötigen? Es fühlt sich ein wenig wie ein [XY-Problem] an (https://meta.stackexchange.com/q/66377/255554). – Wrzlprmft

Antwort

1

SymPy Ausdrücke haben die .evalf() Methode, um Zahlen zu approximieren. Es akzeptiert einen optionalen Parameter n, der die Anzahl der Ziffern angibt, die der ungefähre Ausdruck enthalten wird.

Angenommen Sie Ausdruck in der expr Variablen enthalten:

In [5]: expr 
Out[5]: 3.14285714285714⋅s 

In [6]: expr.evalf(n=10) 
Out[6]: 3.142857143⋅s 

In [7]: expr.evalf(n=2) 
Out[7]: 3.1⋅s 

In [8]: expr.evalf(n=3) 
Out[8]: 3.14⋅s 
+1

Während dieses Code-Snippet willkommen ist und möglicherweise etwas Hilfe bietet, wäre es [stark verbessert, wenn es eine Erklärung enthielt] (// meta.stackexchange.com/q/114762) von * wie * es die Frage anspricht. Ohne dies hat Ihre Antwort viel weniger pädagogischen Wert - denken Sie daran, dass Sie die Frage für Leser in der Zukunft beantworten, nicht nur die Person, die jetzt fragt! Bitte [bearbeiten] Sie Ihre Antwort, um eine Erläuterung hinzuzufügen und geben Sie an, welche Einschränkungen und Annahmen gelten. –