Nachkommastellen in Python
Einführende Beispiele
Nachkommastellen werden nicht etwa durch ein Komma, sondern durch einen Punkt abgetrennt. Die Zahl ‹ 12,23 › wird in Python also als »12.23« geschrieben.
Wir nennen solch ein Numerale mit einem Punkt ».« ein Punktnumerale.
- Numeralia mit dem Wert ‹ 12 ›
12
12.0
12.00- Punktnumeralia mit verschiedenen Werten
12.45
12.9876432
1.2
87.0- Eingabe eines Ausdrucks und Ausgabe einer Textdarstellung seines Wertes
12.0
12.0
Eine Folge von Nullen, die ganz am Ende eines Numerales hinter einem Punkt steht, trägt nicht zu seinem Wert bei.
Die Zahl 12 kann daher sowohl als »12.0« als auch als »12.00« geschrieben werden.
- Eingabe eines Ausdrucks und Ausgabe einer Textdarstellung seines Wertes
12.00
12.0
- Eingabe eines Ausdrucks und Ausgabe einer Textdarstellung seines Wertes
12.0
12.0
Führende Nullen
Führende Nullen (also eine Null am Anfang, der eine Ziffer folgt) sind erlaubt, wenn das Numerale einen Punkt ».« enthält. Der Ausdruck »012.1« ist also ein erlaubtes Punktnumerale.
Begrenzung der Genauigkeit
Bei der Ausgabe eines Wertes mit Nachkommastellen wird dieser manchmal auf eine bestimmte Anzahl von Stellen abgeschnitten. Dies liegt daran, daß eine Python -Implementation bei Verwendung der hier gezeigten einfachen Ausdrücke nur eine begrenzte Anzahl von Stellen verarbeitet.
- Eingabe eines Ausdrucks und Ausgabe einer Textdarstellung seines Wertes
3.1415926535897932
3.141592653589793
Weglassen von Nullen
Wenn auf den Punkt ».« nur noch Nullen »0« folgen, so dürfen die Nullen alle weggelassen werden, so daß an Stelle von »12.0« auch die Schreibweise »12.« erlaubt ist.
- Eingabe eines Ausdrucks und Ausgabe einer Textdarstellung seines Wertes
12.
12.0
Wenn vor dem Punkt ».« nur noch Nullen »0« stehen, so dürfen die Nullen alle weggelassen werden, so daß an Stelle von »0.45« auch die Schreibweise ».45« erlaubt ist.
- Eingabe eines Ausdrucks und Ausgabe einer Textdarstellung seines Wertes
.45
0.45
Jedoch darf »0.0« nicht zu ».« verkürzt werden – eine Ziffer muß erhalten bleiben.
Aufbau
Unter einer Ziffernfolge verstehen wir hier eine Folge von Dezimalziffern (mindestens eine), zwischen denen sich noch jeweils ein Grundstrich befinden kann.
- Produktionsregel
Ziffernfolge
.---------------.
|-|--->| Dezimalziffer |--->.----------------------------------------.--->|-|
'---------------' ^ |
| .---------------. |
'---| Dezimalziffer |<-------------------'
'---------------' ^ |
| .-. |
'---( _ )---'
'-'
Ein Punktnumerale, kann mit einer Ziffernfolge beginnen, auf die ein Punkt ».« folgt. Auf den Punkt ».« darf dann noch eine weitere Ziffernfolge folgen.
- Produktionsregel
Punktnumerale
.--------------. .-.
|-|--->| Ziffernfolge |--->( . )---.-----------------------.--->|-|
'--------------' '-' | ^
| .--------------. |
'--->| Ziffernfolge |---'
'--------------'
Ein Punktnumerale, kann auch aus einem Punkt und einer Ziffernfolge bestehen.
- Produktionsregel
Punktnumerale
.-. .--------------.
|-|--->( . )--->| Ziffernfolge |--->|-|
'-' '--------------'
Durch die hier vorgestellten Punktnumeralia wird die Bedeutung des Wortes „Numerale“ aus einer früheren Lektion nun erweitert: Sowohl die früher vorgestellten Numeralia als auch die in dieser Lektion neu vorgestellten Punktnumeralia sind Numeralia.
Semantik
Der Wert eines Punktnumerales ist zunächst der Wert, den solche ein Numerale auch im Alltag hat, nachdem etwaige Grundstriche »_« entfernt, der Punkt durch eine Komma ersetzt und gegebenenfalls eine Null ergänzt wurde, um zu verhindern, daß das Numerale direkt mit dem Komma beginnt oder endet. Beispielsweise ist der Wert des Punktnumerales »12.2« gleich ‹ 12,2 ›. Allerdings gilt dies nur näherungsweise, da nicht alle Werte mit Nachkommastellen genau dargestellt werden können. Es würde jedoch zu weit führen, dieses Thema an dieser Stelle des Kurses weiter zu vertiefen.
- Numerale und Wert
Numerale Wert
1. 1,0
1.0 1,0
1.00 1,0
1_2.2 12,2
Etwas genauere Beschreibung der Ermittlung des Wertes ⃗
Jede Stelle eines Punktnumerales hat eine Positionsnummer, die man erhält, indem man der ersten Stelle vor dem Punkt, die Position ‹ 0 › zuordnet, der Stelle davor die Position ‹ 1 › und so weiter. Die erste Stelle nach dem Punkt hat die Position ‹ -1 ›, die Stelle danach die Position ‹ -2 › und so weiter. Der Wert einer Stelle ergibt sich dann aus dem Produkt des Wertes der Ziffer an dieser Stelle und dem Wert der Zehnerpotenz mit der Position der Stelle als Exponent. Der vorläufige Wert des gesamten Punknumerales ist dann die Summe der Werte aller Stellen des Punktumerales.
Der endgültige Wert eines Punktnumerales ist dann die beste Näherung an den vorläufigen Wert, welche die Python -Implementation im Rahmen des Wertesystems, das für Punktnumeralia verwendet wird, zur Verfügung hat.
Anmerkungen
Normalformen ⃗
Wenn es für einen Wert verschiedene mögliche Schreibweisen, wie »'a'« und »"a"« oder »12.0« und »12.00« gibt, dann fragt man sich natürlich manchmal, welche davon man verwenden soll.
Wir bezeichnen die von der Konsole ausgegebenen Form der Schreibweise eines Wertes als Normalform.
- Eingabe eines Ausdrucks und Ausgabe einer Textdarstellung seines Wertes
'a'
'a'
- Eingabe eines Ausdrucks und Ausgabe einer Textdarstellung seines Wertes
"a"
'a'
- Eingabe eines Ausdrucks und Ausgabe einer Textdarstellung seines Wertes
12.0
12.0
- Eingabe eines Ausdrucks und Ausgabe einer Textdarstellung seines Wertes
12.00
12.0
Im Zweifel sollte die Normalform eines Wertes zur Eingabe dieses Wertes verwendet werden (also beispielsweise »'a'« oder »12.0«).
Literale
Wir können nun zwischen ganzzahligen Numeralia (wie »32767« oder »0x22«) ohne Punkt und Punktnumeralia (wie »12.0 oder »12.00«) mit einem Punkt unterscheiden.
Ein Oberbegriff für ganzzahlige Numeralia und Punktnumeralia ist „Numerale“ (numerisches Literal).
- Begriffshierarchie der Literale
Ausdruck
^
|
Literal
^
|
.-------------'-------------.
| |
Numerale Zeichenfolgenliteral
^ "abc"
|
.-------------'-------------.
| |
ganzzahliges Numerale Punktnumerale
^ 2.8
|
.-------------'-------------.
| |
Dezimalnumerale Hexadezimalnumerale
123 0x1A
Übungsfragen ʳ⁴⁴
? Übungsfrage ʳ⁴⁴
Ist der Wert des Numerales »22.0« gleich dem Wert des Numerales »22.00«?
? Übungsfrage ʳ⁴⁴
Ist das Numerale »22.0« gleich dem Numerale »22.00«?
Aufbaudiagramme der Sprache ⃗
- Aufbaudiagramm für Ausdrücke
Zeichenfolgenliteral
.-. .-.
|-|---.--->( ' )---.------------------------------.--->( ' )---.--->|-|
| '-' ^ | '-' ^
| | .---------------------. | |
| '---| ein Zeichen außer ' |<---' |
| '---------------------' |
| .-. .-. |
'--->( " )---.------------------------------.--->( " )---'
'-' ^ | '-'
| .---------------------. |
'---| ein Zeichen außer " |<---'
'---------------------'Jede Dezimalziffer ausser 0
.-.
|-|---.--->( 1 )---.--->|-|
| '-' ^
| .-. |
'--->( 2 )---'
| '-' ^
| .-. |
'--->( 3 )---'
| '-' ^
| .-. |
'--->( 4 )---'
| '-' ^
| .-. |
'--->( 5 )---'
| '-' ^
| .-. |
'--->( 6 )---'
| '-' ^
| .-. |
'--->( 7 )---'
| '-' ^
| .-. |
'--->( 8 )---'
| '-' ^
| .-. |
'--->( 9 )---'
'-'Dezimalziffer
.-.
|-|---.-------->( 0 )----------.--->|-|
| '-' |
| .---------------. |
| | Jede | |
'--->| Dezimalziffer |---'
| ausser 0 |
'---------------'Dezimalnumerale (0)
.---------------.
| Jede |
|-|--->| Dezimalziffer |---.---------------------------------------.--->|-|
| ausser 0 | ^ |
'---------------' | |
| .---------------. |
'---| Dezimalziffer |----<--------------'
'---------------' ^ |
| .-. |
'---( _ )---'
'-'Dezimalnumerale (1)
.-.
.---( _ )---.
| '-' |
V |
.----<----------'---.
| |
V .-. |
|-|---'------>( 0 )-------'--->|-|
'-'Hexadezimalziffer
.-.
|-|---.--->( 0 )---.--->|-|
| '-' ^
| .-. |
'--->( 1 )---'
| '-' ^
| .-. |
'--->( 2 )---'
| '-' ^
| .-. |
'--->( 3 )---'
| '-' ^
| .-. |
'--->( 4 )---'
| '-' ^
| .-. |
'--->( 5 )---'
| '-' ^
| .-. |
'--->( 6 )---'
| '-' ^
| .-. |
'--->( 7 )---'
| '-' ^
| .-. |
'--->( 8 )---'
| '-' ^
| .-. |
'--->( 9 )---'
| '-' ^
| .-. |
'--->( a )---'
| '-' ^
| .-. |
'--->( A )---'
| '-' ^
| .-. |
'--->( b )---'
| '-' ^
| .-. |
'--->( B )---'
| '-' ^
| .-. |
'--->( c )---'
| '-' ^
| .-. |
'--->( C )---'
| '-' ^
| .-. |
'--->( d )---'
| '-' ^
| .-. |
'--->( D )---'
| '-' ^
| .-. |
'--->( e )---'
| '-' ^
| .-. |
'--->( E )---'
| '-' ^
| .-. |
'--->( f )---'
| '-' ^
| .-. |
'--->( F )---'
'-'Hexadezimalnumerale .---------------------------------------------.
Null kleines x | |
.-. .-. v .-. .-------------------. |
|-|--->( 0 )---.--->( x )---.---'---.--->( _ )---.--->| Hexadezimalziffer |---'--->|-|
'-' | '-' ^ | '-' ^ '-------------------'
| .-. | | |
'--->( X )---' '------------'
'-'
grosses XZiffernfolge
.---------------.
|-|--->| Dezimalziffer |--->.----------------------------------------.--->|-|
'---------------' ^ |
| .---------------. |
'---| Dezimalziffer |<-------------------'
'---------------' ^ |
| .-. |
'---( _ )---'
'-'Punktnumerale
.--------------. .-.
|-|--->| Ziffernfolge |--->( . )---.-----------------------.--->|-|
'--------------' '-' | ^
| .--------------. |
'--->| Ziffernfolge |---'
'--------------'Punktnumerale
.-. .--------------.
|-|--->( . )--->| Ziffernfolge |--->|-|
'-' '--------------'ganzzahliges Numerale
.-----------------------.
|-|---.--->| Dezimalnumeral |---.--->|-|
| '-----------------------' |
| .-----------------------. |
'--->| Hexadezimalnumerale |---'
'-----------------------'Numerale
.-----------------------.
|-|---.--->| ganzzahliges Numerale |---.--->|-|
| '-----------------------' |
| .-----------------------. |
'--->| Punktnumerale |---'
'-----------------------'Literal
.-----------------------.
|-|---.--->| Zeichenfolgenliteral |---.--->|-|
| '-----------------------' |
| .-----------------------. |
'--->| Numerale |---'
'-----------------------'Ausdruck
.---------.
|-|--->| Literal |--->|-|
'---------'