Nachkommastellen in Python (Nachkommastellen in Python), Lektion, Seite 723760
https://www.purl.org/stefan_ram/pub/nachkommastellen_python (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Python-Kurs

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 X

Ziffernfolge
.---------------.
|-|--->| Dezimalziffer |--->.----------------------------------------.--->|-|
'---------------' ^ |
| .---------------. |
'---| Dezimalziffer |<-------------------'
'---------------' ^ |
| .-. |
'---( _ )---'
'-'

Punktnumerale
.--------------. .-.
|-|--->| Ziffernfolge |--->( . )---.-----------------------.--->|-|
'--------------' '-' | ^
| .--------------. |
'--->| Ziffernfolge |---'
'--------------'

Punktnumerale
.-. .--------------.
|-|--->( . )--->| Ziffernfolge |--->|-|
'-' '--------------'

ganzzahliges Numerale

.-----------------------.
|-|---.--->| Dezimalnumeral |---.--->|-|
| '-----------------------' |
| .-----------------------. |
'--->| Hexadezimalnumerale |---'
'-----------------------'

Numerale

.-----------------------.
|-|---.--->| ganzzahliges Numerale |---.--->|-|
| '-----------------------' |
| .-----------------------. |
'--->| Punktnumerale |---'
'-----------------------'

Literal

.-----------------------.
|-|---.--->| Zeichenfolgenliteral |---.--->|-|
| '-----------------------' |
| .-----------------------. |
'--->| Numerale |---'
'-----------------------'

Ausdruck

.---------.
|-|--->| Literal |--->|-|
'---------'

 

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram723760 stefan_ram:723760 Nachkommastellen in Python Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723760, slrprddef723760, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/nachkommastellen_python