Hier ist mein Code:
x = 1.0
y = 100000.0
print x/y
Mein Quotient wird als angezeigt 1.00000e-05
.
Gibt es eine Möglichkeit, die wissenschaftliche Notation zu unterdrücken und als anzuzeigen
0.00001
? Ich werde das Ergebnis als Zeichenfolge verwenden.
python
floating-point
Matt
quelle
quelle
Antworten:
Aber Sie müssen die Präzision selbst verwalten. z.B,
zeigt nur Nullen an.
Details finden Sie in den Dokumenten
Oder für Python 3 die entsprechende alte Formatierung oder die neuere Formatierung
quelle
Verwenden Sie die neuere Version
''.format
(denken Sie auch daran, anzugeben, wie viele Ziffern nach der.
Anzeige angezeigt werden sollen. Dies hängt davon ab, wie klein die schwebende Zahl ist). Siehe dieses Beispiel:Wie oben gezeigt, ist die Standardeinstellung 6 Stellen! Dies ist für unser Fallbeispiel nicht hilfreich, daher könnten wir stattdessen Folgendes verwenden:
Aktualisieren
Ab Python 3.6 kann dies mit dem neuen formatierten String-Literal wie folgt vereinfacht werden:
quelle
f"{a:.{precision}f}"
Mit neueren Versionen von Python (2.6 und höher) können Sie
''.format()
Folgendes erreichen, wie @SilentGhost vorgeschlagen hat:quelle
>>> print('{:f}'.format(0.000000123))
0.000000
'{0:.10f}'
Eine andere Option, wenn Sie Pandas verwenden und die wissenschaftliche Notation für alle Floats unterdrücken möchten, besteht darin, die Pandas-Optionen anzupassen.
quelle
Bei den meisten der oben genannten Antworten müssen Sie die Genauigkeit angeben. Aber was ist, wenn Sie Floats wie diese ohne unnötige Nullen anzeigen möchten:
numpy
hat eine Antwort:np.format_float_positional
quelle
Dies funktioniert für jeden Exponenten:
quelle
Dies verwendet die Antwort von Captain Cucumber , jedoch mit 2 Ergänzungen.
1) Ermöglichen, dass die Funktion nicht wissenschaftliche Notationsnummern erhält und sie einfach so zurückgibt, wie sie sind (so können Sie eine Menge Eingaben machen, dass einige der Zahlen 0,00003123 gegenüber 3,123e-05 sind und immer noch Funktionsarbeit haben.
2) Unterstützung für negative Zahlen hinzugefügt. (In der ursprünglichen Funktion würde eine negative Zahl wie 0,0000-108904 von -1,08904e-05 enden.)
quelle
Zusätzlich zur Antwort von SG können Sie auch das Dezimalmodul verwenden:
quelle
Wenn es sich um eine handelt,
string
verwenden Sie die integriertefloat
Konvertierung, um beispielsweise die Konvertierung durchzuführen:print( "%.5f" % float("1.43572e-03"))
Antwort:0.00143572
quelle
Da dies das Top-Ergebnis bei Google ist, werde ich hier posten, nachdem ich keine Lösung für mein Problem gefunden habe. Wenn Sie den Anzeigewert eines Float-Objekts formatieren und es als Float - nicht als Zeichenfolge - beibehalten möchten, können Sie folgende Lösung verwenden:
Erstellen Sie eine neue Klasse, die die Art und Weise ändert, in der Float-Werte angezeigt werden.
Sie können die Genauigkeit selbst ändern, indem Sie die Ganzzahlwerte in ändern
{:f}
quelle
Bei Verwendung von 3.6.4 hatte ich ein ähnliches Problem, bei dem zufällig eine Zahl in der Ausgabedatei mit wissenschaftlicher Notation formatiert wurde, wenn Folgendes verwendet wurde:
Alles was ich tun musste, um das Problem zu beheben, war 'f' hinzuzufügen:
quelle
Ab 3.6 (funktioniert wahrscheinlich auch mit etwas älterem 3.x) ist dies meine Lösung:
Der Zweck der
precision
Berechnung besteht darin, sicherzustellen, dass wir genügend Genauigkeit haben, um nicht in die wissenschaftliche Notation einzutreten (die Standardgenauigkeit beträgt immer noch 6).Das
dec_precision
Argument fügt zusätzliche Genauigkeit hinzu, die für Dezimalstellen verwendet werden kann. Da dies dasn
Format verwendet, werden (im Gegensatz zuf
Formaten) keine unbedeutenden Nullen hinzugefügt .n
kümmert sich auch darum, bereits runde Ganzzahlen ohne Dezimalstelle zu rendern.n
erfordertfloat
Eingabe, also die Besetzung.quelle