I "g"
für die Formatierung von Gleitkommazahlen verwenden, aber es schaltet auf wissenschaftliche Formatierung zu früh für mich - an der 5. Stelle:Python float Formatierung - wie „g“, aber mit mehr Ziffern
>>> format(0.0001, "g")
'0.0001'
>>> format(0.00001, "g")
'1e-05'
Dies scheint bis in den "g"
Regeln (die -4) beschrieben werden:
die genauen Regeln sind wie folgt: Angenommen, dass das Ergebnis mit Darstellungs ‚e‘ formatiert und Präzision p-1 würde Exponent exp haben. Wenn dann -4 < = exp < p ist, wird die Nummer mit dem Präsentationstyp 'f' und der Genauigkeit p-1-exp formatiert. Andernfalls wird die Nummer mit dem Präsentationstyp 'e' und der Genauigkeit p-1 formatiert. In beiden Fällen werden nicht signifikante nachgestellte Nullen aus dem Signifikanden entfernt, und der Dezimalpunkt wird ebenfalls entfernt, wenn keine verbleibenden Ziffern folgen.
Gibt es eine Möglichkeit, Zahlen wie "g"
anzuzeigen, aber mit mehr Ziffern, bevor Sie zur wissenschaftlichen Notation wechseln?
Ich denke an die Verwendung ".6f"
und Strippen nach Nullen, aber dann werde ich nicht in der Lage, kleine Zahlen zu sehen, die wissenschaftliche Notation benötigen.
+1 - oder, als Einzeiler: '(('% f', '% e') [log10 (n) <-5])% n '- die Lösung funktioniert jedoch mit positivem' n 'nur. – eumiro
@eumiro: Guter Punkt auf den negativen Zahlen (aktualisierte die Antwort), aber ich mag deinen Einliner nicht wirklich. Das Indizieren eines Tupels mit booleschen Werten ist einfach ... nicht pythonisch. –
.rstrip ("0") sollte zu der "% f" -Ausgabe hinzugefügt werden, so dass das Ergebnis mehr "% g" ähnelt – Meh