Das ist mein Code:
print str(float(1/3))+'%'
und es zeigt:
0.0%
aber ich will bekommen 33%
Was kann ich tun?
python
python-2.x
zjm1126
quelle
quelle
1/3
in Ihrem Fall), haben Sie einen Wert pro Einheit , der multipliziert werden muss100
, um einen Prozentwert zu erhalten. In den anderen Antworten finden Sie den Unterschied zwischen Ganzzahl- und Gleitkommadivision.print(str(float(1/3))+'%')
gedruckt0.3333333333333333%
- immer noch nicht genau das, was Sie wollen, aber zumindest ist es ein bisschen näher. Dies liegt daran, dass die Teilung in dieser Version anders funktioniert.Antworten:
format
unterstützt einen prozentualen Gleitkomma-Genauigkeitstyp :Wenn Sie keine Ganzzahldivision wünschen, können Sie die Python3-Division importieren aus
__future__
:quelle
float(1)
wirklich pythonischer als1.
?1.0
anstelle vonfloat(1)
oder verwenden1.
. IMHO ist es weniger aufdringlich als das erstere und nicht so subtil wie das letztere.Es gibt eine bequemere Option zur Formatierung in Prozent für die
.format()
Formatierungsmethode:quelle
"%.1f"
Formatierung der alten Schule zu tun ?print("%.1f%%" % (100 * 1.0/3))
format
bereits Prozentsätze gedruckt werden können!f"{1/3.0:.1%}"
Nur der Vollständigkeit halber, da mir aufgefallen ist, dass niemand diesen einfachen Ansatz vorgeschlagen hat:
Einzelheiten:
%.0f
steht für " einen Gleitkomma mit 0 Dezimalstellen%.2f
drucken ", würde also drucken33.33
%%
druckt ein Literal%
. Ein bisschen sauberer als dein Original+'%'
1.0
anstatt1
sich darum zu kümmern, die Division zum Schweben zu zwingen, also nicht mehr0.0
quelle
1/3
. Bewertungsauftrag ist beabsichtigt:100.0 * 1 / 3 => 100.0 / 3 => 0.33...
100
auf die verschoben1
, um die Dinge klar zu machen..format()
, und%
-Formatieren, auch bekannt als String - Interpolation in Python, ist eine absolut gültige Alternative.Sie teilen ganze Zahlen und konvertieren sie dann in float. Teilen Sie stattdessen durch Schwimmer.
Verwenden Sie als Bonus die hier beschriebenen fantastischen Formatierungsmethoden für Zeichenfolgen: http://docs.python.org/library/string.html#format-specification-mini-language
Festlegen einer prozentualen Konvertierung und Genauigkeit.
Ein tolles Juwel!
quelle
Nur um Python 3 F-String-Lösung hinzuzufügen
quelle
Dann möchten Sie dies stattdessen tun:
Das
.0
bezeichnet sie als Floats undint()
rundet sie anschließend wieder auf ganze Zahlen.quelle
int()
rundet nicht. zBint(1.9) != 2
. Rundung kann so gemacht werden -round(1.9,0) == 2
int()
sicherlich nicht rund hinunter die Zahl. Mein Beispiel macht genau das, was ich damit gemeint habe. die Ziffern abschneiden, da dies das OP wollte.int()
löscht die Ziffern. Es rundet nicht ab. Rundung bedeutet, dass etwas mit den Ziffern zu tun hat. Das Endergebnis ist jedoch dasselbe; In diesem Sinne verstehe ich Ihren Standpunkt. Außerdem klärt das OP nicht, was er / sie mit den Ziffern machen möchte, hat 33.333 ... rundet auf 33. Vielen Dank, dass Sie auf meinen Kommentar geantwortet haben und einen schönen Tag haben!