Während ich mit Float-Präzision arbeitete, stolperte ich über eine seltsame Tatsache. Warum druckt Python nur den ganzzahligen Teil, wenn es mit "%.f"
formatiert wird. Ich bin bereit, den Mechanismus hinter diesemPython Float-Genauigkeit ohne Ganzzahl Genauigkeit nach dem Komma
>>> a = float(2.12345)
>>> a
2.12345
>>> print "%.2f" % a
2.12
>>> print "%.1f" % a
2.1
>>> print "%f" % a
2.123450
>>> print "%.f" % a
2 #why?
Vielen Dank im Voraus für die Erklärung wissen :)
Da '„% .f“' ist das gleiche wie '“ % .0f "'? – Selcuk
Aus dem gleichen Grund, dass "1.0" wahrscheinlich gleich "1." ist. – TigerhawkT3
Dies scheint ein undefiniertes Verhalten zu sein. Die optionale Genauigkeit ist [angegeben als ''. '' (Punkt) gefolgt von der Genauigkeit] (https://docs.python.org/2/library/stdtypes.html # String-Formatierung-Operationen). Die [kleinformatige Dokumentation der Formatspezifikation] (https://docs.python.org/2/library/string.html#format-specification-mini-language) erfordert ebenfalls ein Argument für die Genauigkeit. Da 'int()' 0 zurückgibt, scheint es ein vernünftiger Standard zu sein, aber undefiniertes Verhalten bedeutet genau das. – Chris