So verwenden Sie das Dezimalmodul in Python

So verwenden Sie das Dezimalmodul in Python
Dieser Artikel behandelt eine Anleitung zur Verwendung des "Dezimal" -Moduls in Python. Es kann verwendet werden, um verschiedene mathematische Operationen auf schwimmenden Punktnummern oder Zahlen mit Dezimalpunktpunkten auszuführen. Alle Codeproben in diesem Artikel werden mit Python 3 getestet.9.5 auf Ubuntu 21.04.

Über das Dezimalmodul

Das Dezimalmodul kann, wie der Name schon sagt. Die in diesem Modul enthaltenen Methoden helfen dabei, Dezimalzahlen abzurunden, Zahlen umzuwandeln und arithmetische Berechnungen durchzuführen. Es konzentriert sich auch stark auf Präzision und Genauigkeit und jede Zahl, nachdem ein Dezimalpunkt als signifikant angesehen wird. Das Dezimalmodul berücksichtigt eine Zahl wie 1.40 als 1.40 und nicht als 1.4. Die Verwendung des Dezimalmoduls kann am besten anhand von Beispielen verstanden werden. Einige von ihnen werden unten erklärt.

Ausführung grundlegender mathematischer Berechnungen mit dem Dezimalmodul

Sie können den Dezimalkonstruktor anrufen, um eine Zahl in Python in einen Dezimalart zu konvertieren. Die nachstehende Codeprobe zeigt den Unterschied zwischen der grundlegenden mathematischen Abteilung für ganzzahlige Typen und Dezimalzahlen.

aus Dezimalimporterdezimal
A = 10
B = 11
c = a / b
D = Dezimales (a) / Dezimaler (b)
Druck (c, Typ (c))
Druck (D, Typ (d))

Die erste Aussage importiert die Dezimalklasse aus dem Dezimalmodul. Als nächstes werden zwei Variablen „A“ und „B“ mit einigen Werten erstellt. Die Variable „C“ speichert einen Wert, der durch Teilen der Variablen A durch b erzeugt wird. Der gleiche Vorgang wird dann wiederholt, indem die Zahlen in Objekte vom Typ dezimaler Typ konvertiert werden. Nachdem Sie das obige Code -Beispiel ausgeführt haben, sollten Sie die folgende Ausgabe erhalten:

0.9090909090909091
0.9090909090909090909090909091

Wie Sie im obigen Ausgang sehen können, zeigt das Float -Typ -Objekt Zahlen mit weniger Genauigkeit als das Objekt des Dezimalartyps, da es eine viel aggressivere Annäherungsmethode verwendet als das Objekt des Dezimalartyps. Standardmäßig zeigt eine Dezimalnummer in Python bis zu 28 Zahlen. Sie können diesen Wert je nach Bedarf ändern, indem Sie die im Dezimalmodul verfügbare "getContext" -Methode aufrufen.

aus Dezimalimporterdezimal
vom Dezimalimport getContext
getContext ().prec = 50
A = 10
B = 11
c = a / b
D = Dezimales (a) / Dezimaler (b)
Druck (c, Typ (c))
Druck (D, Typ (d))

In der obigen Code -Probe wurde die GetContext -Funktion importiert und die Präzisionsposition auf bis zu 50 Positionen eingerichtet. Die GetContext -Methode kann verwendet werden, um den aktuellen Kontext im Thread anzuzeigen und einige der Standardkonfigurationsparameter für das Dezimalmodul zu ändern. Nachdem Sie das obige Code -Beispiel ausgeführt haben, sollten Sie die folgende Ausgabe erhalten:

0.9090909090909091
0.9090909090909090909090909090909090909090909091

Sie können jede Art von arithmetischen Berechnungen mit Dezimalartobjekten durchführen, die Sie mit Float -Typ -Objekten in Python ausführen können. Die große Anzahl der nachfolgenden Dezimalzahlen in Objekten vom Typ Dezimalart kann genau genaue Zahlen bringen, die besonders nützlich für finanzielle, buchhalterische, geschäftskritische wissenschaftliche Anwendungen usw. sind.

Beachten Sie, dass Sie Dezimalnummern aus Floats, Ganzzahlen und Zeichenfolgen erstellen können, die Zahlen enthalten, indem Sie den Hauptdezimalkonstruktor aufrufen.

Abrundung der Zahlen mit dem Dezimalmodul

Das Dezimalmodul verfügt über einige vordefinierte Rundungsmodi, mit denen Sie Zahlen mit Dezimalpunkten abrunden können. Diese Modi werden rund_floor, Round_ceiling, Round_Half_down, Round_Half_UP, Round_Up, Round_down, Round_Half_even und Round_05UP bezeichnet. Nach der offiziellen Python -Dokumentation ist hier, was jede dieser Modi tun:

  • Round_floor: Die Zahl ist in Richtung negativer Unendlichkeit gerundet.
  • Round_ceiling: Die Zahl ist in Richtung Unendlichkeit oder positiver Unendlichkeit abgerundet.
  • Round_Half_down: Die Zahlen sind auf die nächste Nummer gerundet. Wenn es ein Unentschieden gibt, ist die Zahl in Richtung Null abgerundet. Krawatten sind äquidistante Zahlen, die sowohl nach oben als auch unten abgerundet werden können. Zum Beispiel eine Zahl wie 4.25 kann auf beide 4 gerundet werden.2 und 4.3.
  • Round_Half_UP: Die Zahlen werden auf die nächste Nummer gerundet. Wenn es ein Unentschieden gibt, ist die Zahl von Null abgerundet.
  • Round_up: Die Nummer ist von Null abgerundet.
  • Round_down: Die Nummer ist auf Null gerundet.
  • Round_Half_even: Die Zahlen sind auf die nächste Nummer gerundet. Alle Bindungen werden auf die nächste gleiche ganze Zahl gerundet.
  • Round_05UP: Die Zahlen sind von Null abgerundet, wenn die letzte Zahl entweder 0 oder 5 ist. Wenn nicht, sind die Zahlen in Richtung Null abgerundet.

Die nachstehende Codeprobe zeigt das Verhalten dieser Modi.

Dezimalheit importieren
aus Dezimalimporterdezimal
vom Dezimalimport getContext
getContext ().Präziber = 2
getContext ().Rundung = Dezimal.Round_Floor
drucken (Dezimal (3).961) + dezimal (0))
getContext ().Rundung = Dezimal.Rund_ceiling
drucken (Dezimal (3).961) + dezimal (0))
getContext ().Rundung = Dezimal.Round_Half_down
drucken (Dezimal (3).705) + Dezimal (0))
getContext ().Rundung = Dezimal.Round_Half_up
drucken (Dezimal (3).775) + Dezimal (0))
getContext ().Rundung = Dezimal.AUFRUNDEN
drucken (Dezimal (3).775) + Dezimal (0))
getContext ().Rundung = Dezimal.ABRUNDEN
drucken (Dezimal (3).609) + Dezimal (0))
getContext ().Rundung = Dezimal.Rund_half_even
drucken (Dezimal (3).665) + Dezimal (0))
getContext ().Rundung = Dezimal.Rund_05up
drucken (Dezimal (3).675) + Dezimal (0))

Das Code -Beispiel ist ziemlich einfach. Eine Präzision von 2 Ziffern wird für die Abrundung der Zahlen eingestellt. Die Rundungsmethode wird geändert, indem der Wert des „Rundungs“ -Objekts festgelegt wird (Teil des Hauptkontexts). Nach dem Ausführen der obigen Code -Probe sollten Sie die folgende Ausgabe abrufen, wobei jede Zeile dem jeweiligen Rundungsmodus entspricht:

3.9
4.0
3.7
3.8
3.8
3.6
3.7
3.6

Abrunden mit der Quantize -Methode

Sie können auch die im Dezimalmodul verfügbare "Quantize" -Methode verwenden, um die Zahlen abzurunden. Der Prozess ist identisch mit der oben erläuterten Methode. Anstatt Präzisionsnummern einzeln festzulegen, können Sie jedoch ein Exponent als Argument für die Quantisierungsmethode liefern, um eine Zahl an eine bestimmte Position abzurunden. Unten finden Sie eine Code -Probe.

Dezimalheit importieren
aus Dezimalimporterdezimal
abgerundet = dezimal (3.961).quantisieren (dezimal ('1.0 '), runding = dezimal.Rund_floor)
drucken (abgerundet)

Ein Exponent von '1.0 'wurde der Quantize -Methode geliefert und eine Rundungsmethode wurde als zusätzliches Argument geliefert. Es wird eine Nummer in x zurückgeben.X Format. Nachdem Sie das obige Code -Beispiel ausgeführt haben, sollten Sie die folgende Ausgabe erhalten:

3.9

Vergleich von zwei Dezimalzahlen

Sie können zwei beliebige Dezimalartobjekte mit der im Dezimalmodul verfügbaren „Vergleichen“ -Methode vergleichen. Die folgenden Beispiele zeigen seine Verwendung.

aus Dezimalimporterdezimal
drucken (Dezimal (1).2).vergleiche (Dezimal (1).1)))
drucken (Dezimal (1).0).vergleiche (Dezimal (1).1)))
drucken (Dezimal (1).0).vergleiche (Dezimal (1).0)))

Sie können die Vergleichsmethode auf einem Dezimalartobjekt aufrufen und die andere Nummer als Argument angeben. Ein Wert von 0, 1 oder -1 wird je nach den verglichenen Zahlen zurückgegeben. Ein Wert von 0 gibt an, dass beide Zahlen gleich sind, ein Wert von 1 gibt an, dass die erste Zahl größer als die zweite Zahl ist, und ein Wert von -1 zeigt an, dass die erste Zahl geringer ist als die zweite Zahl. Nachdem Sie das obige Code -Beispiel ausgeführt haben, sollten Sie die folgende Ausgabe erhalten:

1
-1
0

Abschluss

Obwohl das Dezimalmodul am häufigsten verwendet wird, um die Dezimalpräzision zu kontrollieren und Zahlen nach dem Dezimalpunkt abzurunden. Die grundlegende Verwendung des Dezimalmoduls wurde in diesem Artikel behandelt und sollte für die meisten Situationen ausreichen. Sie können jedoch immer mehr über die erweiterten Methoden aus der offiziellen Python -Dokumentation lesen.