2016-03-31 7 views
4

Immer wenn SymPy ein float zurück zum Jupyter-Notebook ausgibt, zeigt es die ganze Zahl mit der besten Genauigkeit an, die es aufbringen könnte. Ich finde es schwierig, mit einem Ingenieur zu arbeiten, der daran gewöhnt ist, Zahlen mit mehreren 3 Potenzen von 10 zu lesen (Nano, Mikro, Milli, Kilo, Mega, Giga usw.) benutzerdefinierte Funktion to_engg(), die eine Zahl nimmt und eine Zeichenfolge zurückgibt, die eine Zahl in einer willkürlichen Genauigkeit und am Ende angehefteten technischen Präfix enthält.Alle SymPy-Ausgänge auf Jupyter-Notebook schmücken

Wie kann ich den SymPy-Ausgang abfangen und zuerst über meine to_engg()-Funktion verarbeiten?

SymPy: Okay, jetzt werde ich diesen hässlichen Schwimmer auszuspucken 65722045.8015267
Me: Nicht so schnell. Gehe zuerst durch to_engg().
SymPy:ptui!
Einige Magie
Jupyter hier geschieht: Hier gehen Sie. 65.7 M

Die allgemeinsten Art, wie ich denke, könnte dies zu tun, ist über Dekorateure, so dass ich beiseite nur eine andere Funktion von to_engg() nutzen könnte.

Antwort

1

SymPy unterstützt beliebige Genauigkeitsstufen, sodass Sie mit Zahlen beginnen können, die die gewünschte Genauigkeit haben, wie Float('10.3', 3).

Andernfalls müssen Sie einen benutzerdefinierten Drucker erstellen, die sympy.printing.latex.LatexPrinter Unterklassen und überschreibt _print_Float die Präzision verwenden Sie (siehe default implementation) möchten, und init_printing(latex_printer=YourSubclass().doprint) verwenden.

Verwandte Themen