Python numbers, type conversion and math

Table of Contents

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.

 

Zahl Datentyp in Python

 

Python unterstützt ganze Zahlen, Gleitkommazahlen und komplexe Zahlen.
Sie sind definiert als int, float, und complex klassen in Python.

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

 

Komplexe Zahlen werden in der Form geschrieben, x + yj,wo x ist der wahre Teil und y ist der Imaginärteil.

Wir können die type() Funktion, um zu wissen, zu welcher Klasse eine Variable oder ein Wert gehört und isinstance() Funktion, um zu überprüfen, ob es 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:

<class 'int'>
<class 'float'>
(8+3j)
True

 

 

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

Die Zahlen, mit denen wir täglich zu tun haben, sind nach dem dezimalen Zahlensystem (Basis 10). Aber Computerprogrammierer (im Allgemeinen eingebettete Programmierer) müssen mit binären (Basis 2), hexadezimalen (Basis 16) und oktalen (Basis 8) Zahlensystemen arbeiten.

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

 

Nummern System Prefix
Binär ‘0b’ or ‘0B’
Oktal ‘0o’ or ‘0O’
Hexadezimal ‘0x’ or ‘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, wird die Ausgabe sein:

107
253
13

 


 

 

Typ Konvertierung

 

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

Operationen wie Addition, Subtraktion erzwingen implizit (automatisch) Integer zu float, wenn einer der Operanden float ist.

>>> 1 + 2.0
3.0

 

Wir können oben sehen, dass 1 (Ganzzahl) zur Addition in 1.0 (Float) umgewandelt wird und das Ergebnis ebenfalls eine Gleitkommazahl ist.

Wir können auch eingebaute Funktionen verwenden wie int(), float() und complex()
zwischen Typen explizit konvertieren. Diese Funktionen können sogar von strings.

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

 

Beim Konvertieren von Float in Integer wird die Zahl abgeschnitten (Dezimalteile werden entfernt).

 


 

Python Dezimal

Die in Python integrierte Klasse float führt einige Berechnungen durch, die uns verblüffen könnten. Wir alle wissen, dass die Summe von 1,1 und 2,2 3,3 ist, aber Python scheint da anderer Meinung zu sein.

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

 

Was geht vor?

Es stellt sich heraus, dass Gleitkommazahlen in Computerhardware als binäre Brüche implementiert sind, da der Computer nur binäre Werte (0 und 1) versteht. Aus diesem Grund können die meisten der uns bekannten Dezimalbrüche in unserem Computer nicht genau 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 nur eine endliche Anzahl davon speichert.

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

 

>>> 1.1 + 2.2
3.3000000000000003

 

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

Sehen wir uns den Unterschied an:

import decimal

print(0.1)

print(decimal.Decimal(0.1))

 

Output

0.1
0.1000000000000000055511151231257827021181583404541015625

 

 

Dieses Modul wird verwendet, wenn wir Dezimalrechnungen 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 zwei signifikante Dezimalstellen im Vergleich zu einer hat.

from decimal import Decimal as D

print(D('1.1') + D('2.2'))

print(D('1.2') * D('2.50'))

 

Output

3.3
3.000

 

Beachten Sie die nachgestellten Nullen im obigen Beispiel.

Wir könnten fragen, warum nicht implementieren Decimal jedes Mal statt schweben? Der Hauptgrund ist die Effizienz. Gleitkommaoperationen müssen schneller ausgeführt werden als Decimal Betrieb.

 

Wann sollte Decimal statt Float verwendet werden?

 

In den folgenden Fällen verwenden wir im Allgemeinen Dezimal.

 

  • Wenn wir Finanzanwendungen erstellen, die eine genaue Dezimaldarstellung benötigen.
  • Wenn wir die erforderliche Präzision kontrollieren wollen.
  • Wenn wir den Begriff der signifikanten Dezimalstellen implementieren wollen.

 


 

 

Python Fractions

 

Python bietet Operationen mit Bruchzahlen durch seine fractions modul.

Ein Bruch hat einen Zähler und einen Nenner, die beide ganze Zahlen sind. Dieses Modul unterstützt rationale Zahlenarithmetik.

Wir können Fraction-Objekte auf verschiedene Weise erstellen. Schauen wir sie uns an.

import fractions

print(fractions.Fraction(1.5))

print(fractions.Fraction(5))

print(fractions.Fraction(1,3))

 

Output

3/2
5
1/3

 

Beim Erstellen Fraction von float, wir könnten einige ungewöhnliche Ergebnisse erhalten. Dies liegt an der unvollkommenen binären Gleitkommazahl-Darstellung, wie im vorherigen Abschnitt besprochen.

 

Glücklicherweise, Fraction erlaubt uns, auch mit string zu instanziieren Dies ist die bevorzugte Option, wenn Dezimalzahlen verwendet werden.

 

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

 

Dieser Datentyp unterstützt alle grundlegenden Operationen. Hier sind ein paar Beispiele.

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 bietet Module wie math und random verschiedene Mathematik wie Trigonometrie, Logarithmen, Wahrscheinlichkeit und Statistik usw. durchzuführen.

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

 

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

import random

print(random.randrange(10, 20))

x = ['a', 'b', 'c', 'd', 'e']

# Zufallsauswahl erhalten
print(random.choice(x))

# Mischen x
random.shuffle(x)

# Drucken des gemischten x
print(x)

# Zufälliges Element drucken
print(random.random())

 

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

18
e
['c', 'e', 'd', 'b', 'a']
0.5682821194654443

 

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