Python-Zahlen, Typkonvertierung und Mathematik

In diesem Artikel erfahren Sie mehr über die verschiedenen in Python verwendeten Zahlen, die Konvertierung von einem Datentyp in den anderen und die in Python unterstützten mathematischen Operationen.

Nummer Datentyp in Python

Python unterstützt Ganzzahlen, Gleitkommazahlen und komplexe Zahlen. Sie werden als definiert int, floatund complexKlassen in Python.

Ganzzahlen und Gleitkommazahlen werden durch das Vorhandensein oder Fehlen eines Dezimalpunkts getrennt. Zum Beispiel ist 5 eine ganze Zahl, während 5.0 eine Gleitkommazahl ist.

Komplexe Zahlen werden in der Form geschrieben, x + yjwobei x der Realteil und y der Imaginärteil ist.

Wir können die type()Funktion verwenden, um zu wissen, zu welcher Klasse eine Variable oder ein Wert gehört, und um isinstance()zu überprüfen, ob sie zu einer bestimmten Klasse gehört.

Schauen wir uns ein Beispiel an:

 a = 5 print(type(a)) print(type(5.0)) c = 5 + 3j print(c + 3) print(isinstance(c, complex))

Wenn wir das obige Programm ausführen, erhalten wir die folgende Ausgabe:

 (8 + 3j) Richtig

Während Ganzzahlen beliebig lang sein können, ist eine Gleitkommazahl nur bis zu 15 Dezimalstellen genau (die 16. Stelle ist ungenau).

Die Zahlen, mit denen wir uns jeden Tag beschäftigen, sind vom Dezimalzahlensystem (Basis 10). Computerprogrammierer (im Allgemeinen eingebettete Programmierer) müssen jedoch mit binären (Basis 2), hexadezimalen (Basis 16) und oktalen (Basis 8) Zahlensystemen arbeiten.

In Python können wir diese Zahlen darstellen, indem wir ein entsprechendes Präfix vor diese Zahl setzen. In der folgenden Tabelle sind diese Präfixe aufgeführt.

Zahlensystem Präfix
Binär '0b' oder '0B'
Oktal '0o' oder '0O'
Hexadezimal '0x' oder '0X'

Hier sind einige Beispiele

 # Output: 107 print(0b1101011) # Output: 253 (251 + 2) print(0xFB + 0b10) # Output: 13 print(0o15)

Wenn Sie das Programm ausführen, lautet die Ausgabe wie folgt:

 107 253 13

Typkonvertierung

Wir können einen Zahlentyp in einen anderen umwandeln. Dies wird auch als Zwang bezeichnet.

Operationen wie Addition, Subtraktion zwingen die Ganzzahl dazu, implizit (automatisch) zu schweben, wenn einer der Operanden float ist.

 >>> 1 + 2.0 3.0

Wir können oben sehen, dass 1 (Ganzzahl) zur Addition in 1,0 (Gleitkomma) gezwungen wird und das Ergebnis auch eine Gleitkommazahl ist.

Wir können auch integrierte Funktionen nutzen wie int(), float()und complex()explizit zwischen den Typen zu konvertieren. Diese Funktionen können sogar aus Zeichenfolgen konvertiert werden.

 >>> int(2.3) 2 >>> int(-2.8) -2 >>> float(5) 5.0 >>> complex('3+5j') (3+5j)

Bei der Konvertierung von float in integer wird die Zahl abgeschnitten (Dezimalstellen werden entfernt).

Python Decimal

Die in Python integrierte Klasse float führt einige Berechnungen durch, die uns in Erstaunen versetzen könnten. Wir alle wissen, dass die Summe von 1.1 und 2.2 3.3 ist, aber Python scheint nicht zuzustimmen.

 >>> (1.1 + 2.2) == 3.3 False

Was ist los?

Es stellt sich heraus, dass Gleitkommazahlen in Computerhardware als binäre Brüche implementiert sind, da der Computer nur binäre (0 und 1) versteht. Aus diesem Grund können die meisten uns bekannten Dezimalbrüche nicht genau in unserem Computer gespeichert werden.

Nehmen wir ein Beispiel. Wir können den Bruch 1/3 nicht als Dezimalzahl darstellen. Dies ergibt 0,33333333… was unendlich lang ist und wir können es nur annähern.

Es stellt sich heraus, dass der Dezimalbruch 0,1 zu einem unendlich langen binären Bruch von 0,000110011001100110011 führt… und unser Computer speichert nur eine endliche Anzahl davon.

Dies wird nur ungefähr 0,1 sein, aber niemals gleich sein. Daher ist dies die Einschränkung unserer Computerhardware und kein Fehler in Python.

 >>> 1.1 + 2.2 3.3000000000000003

Um dieses Problem zu beheben, können wir das mit Python gelieferte Dezimalmodul verwenden. Während Gleitkommazahlen eine Genauigkeit von bis zu 15 Dezimalstellen haben, hat das Dezimalmodul eine vom Benutzer einstellbare Genauigkeit.

Mal sehen, den Unterschied:

 import decimal print(0.1) print(decimal.Decimal(0.1))

Ausgabe

 0,1 0,1000000000000000055511151231257827021181583404541015625

Dieses Modul wird verwendet, wenn wir Dezimalberechnungen durchführen möchten, wie wir sie in der Schule gelernt haben.

Es bewahrt auch die Bedeutung. Wir wissen, dass 25,50 kg genauer sind als 25,5 kg, da es im Vergleich zu einer zwei signifikante Dezimalstellen hat.

 from decimal import Decimal as D print(D('1.1') + D('2.2')) print(D('1.2') * D('2.50'))

Ausgabe

 3.3 3.000

Notice the trailing zeroes in the above example.

We might ask, why not implement Decimal every time, instead of float? The main reason is efficiency. Floating point operations are carried out must faster than Decimal operations.

When to use Decimal instead of float?

We generally use Decimal in the following cases.

  • When we are making financial applications that need exact decimal representation.
  • When we want to control the level of precision required.
  • When we want to implement the notion of significant decimal places.

Python Fractions

Python provides operations involving fractional numbers through its fractions module.

A fraction has a numerator and a denominator, both of which are integers. This module has support for rational number arithmetic.

We can create Fraction objects in various ways. Let's have a look at them.

 import fractions print(fractions.Fraction(1.5)) print(fractions.Fraction(5)) print(fractions.Fraction(1,3))

Output

 3/2 5 1/3

While creating Fraction from float, we might get some unusual results. This is due to the imperfect binary floating point number representation as discussed in the previous section.

Fortunately, Fraction allows us to instantiate with string as well. This is the preferred option when using decimal numbers.

 import fractions # As float # Output: 2476979795053773/2251799813685248 print(fractions.Fraction(1.1)) # As string # Output: 11/10 print(fractions.Fraction('1.1'))

Output

 2476979795053773/2251799813685248 11/10

This data type supports all basic operations. Here are a few examples.

 from fractions import Fraction as F print(F(1, 3) + F(1, 3)) print(1 / F(5, 6)) print(F(-3, 10)> 0) print(F(-3, 10) < 0)

Output

 2/3 6/5 False True

Python Mathematics

Python offers modules like math and random to carry out different mathematics like trigonometry, logarithms, probability and statistics, etc.

 import math print(math.pi) print(math.cos(math.pi)) print(math.exp(10)) print(math.log10(1000)) print(math.sinh(1)) print(math.factorial(6))

Output

 3.141592653589793 -1.0 22026.465794806718 3.0 1.1752011936438014 720

Here is the full list of functions and attributes available in the Python math module.

 import random print(random.randrange(10, 20)) x = ('a', 'b', 'c', 'd', 'e') # Get random choice print(random.choice(x)) # Shuffle x random.shuffle(x) # Print the shuffled x print(x) # Print random element print(random.random())

Wenn wir das obige Programm ausführen, erhalten wir die Ausgabe wie folgt (Werte können aufgrund des zufälligen Verhaltens unterschiedlich sein)

 18 e ('c', 'e', ​​'d', 'b', 'a') 0,5682821194654443

Hier ist die vollständige Liste der Funktionen und Attribute, die im Python-Zufallsmodul verfügbar sind.

Interessante Beiträge...