Wie erhalten Sie eine Dezimalzahl in Python?

9

In einer wirklich surrealen Erfahrung habe ich 20 Minuten mit einer Aufgabe verbracht, von der ich dachte, dass sie 20 Sekunden dauern würde.

Ich möchte Dezimalzahlen mit 3 oder mehr Stellen verwenden. Ich kann nichts über einen Platz bekommen, und selbst in diesem Fall ist es Unsinn.

Zum Beispiel kann ich 1/3 nicht anders als 0 oder 0.0 anzeigen lassen.

Googeln führte mich zu Dezimal, aber Dezimal auch konnte nicht helfen.

Bitte beende diese Folter und sag mir, was ich tun muss, damit 1/3 als .333 erscheint!

Bearbeiten Vielen Dank, dass Sie das geklärt haben! Anscheinend haben Computerwissenschaftler etwas erfunden, das als Integer-Division bezeichnet wird, um Mathematiker zu verwirren und zu irritieren. Danke, dass Sie so freundlich sind, meine Verwirrung zu zerstreuen.

    
rschwieb 15.07.2012, 00:45
quelle

5 Antworten

19

In% Python 2 hat 1/3 eine ganze Zahl, weil beide Operanden ganze Zahlen sind. Sie müssen float division durchführen:

%Vor%

Oder:

%Vor%

Was bewirkt, dass / echte Division und // ganzzahlige Division machen. Dies ist der Standardwert von Python 3.

    
Seth Carnegie 15.07.2012, 00:47
quelle
7

Wenn Sie 2 ganze Zahlen teilen, erhalten Sie ein abgeschnittenes Integer-Ergebnis (d. h. jeder Bruchteil des Ergebnisses wird verworfen), weshalb

%Vor%

gibt Ihnen:

%Vor%

Um dieses Problem zu vermeiden, muss mindestens einer der Operanden ein float sein. z. B. 1.0 / 3 oder 1 / 3.0 oder (natürlich) 1.0 / 3.0 vermeiden eine ganzzahlige Kürzung . Dieses Verhalten ist für Python übrigens nicht einzigartig.

( Bearbeiten : Wie unten in einem hilfreichen Kommentar von @Ivc erwähnt, wenn einer der ganzzahligen Operanden negativ ist, lautet das Ergebnis floor () " stattdessen - siehe diesen Artikel über den Grund dafür.

Es kann auch zu Verwirrung bezüglich der internen und externen Repräsentation der Nummer kommen. Die Nummer ist, was sie ist, aber wir können bestimmen, wie sie angezeigt wird.

Sie können die externe Darstellung mit Formatierungsanweisungen steuern. Zum Beispiel kann eine Zahl mit 5 Nachkommastellen wie folgt angezeigt werden:

%Vor%

Um 15 Nachkommastellen zu erhalten.

%Vor%

Schließlich gibt es eine "neue und verbesserte" Möglichkeit, Strings / Zahlen mit der .format() -Funktion zu formatieren, die für wahrscheinlich viel länger als die oben gezeigte % -Formatierung sein wird. Ein Beispiel wäre:

%Vor%

würde dir geben:

%Vor%     
Levon 15.07.2012 00:48
quelle
2

Ihr Wert muss ein Gleitkomma sein

%Vor%

oder

%Vor%     
Andy Casey 15.07.2012 00:48
quelle
2

In Python2 müssen Sie mindestens einen der Operanden als Fließkommazahl angeben. Um nur 3 Dezimalstellen zu verwenden, können Sie die Methode round() verwenden:

%Vor%

In Python3 scheint es, dass sie keine Ganzzahldivision standardmäßig ausführen, also können Sie tun:

%Vor%     
dave 15.07.2012 00:52
quelle
1

Verwenden Sie Dezimal. Sie können 100 Ziffern hinter dem Punkt bekommen.

%Vor%     
recobayu 06.04.2015 10:27
quelle

Tags und Links