i

Gleitkommazahlen in Python

Gleitkommazahlen - korrekt / nicht korrekt dargestellt

Gleitkommazahlen kann man in Python auf vielerelei Weisen darstellen. Man kann dabei aber auch Fehler machen.

Aufgabe 1

(a) Ordne die Beispiele in der LearningApp unter der Aufgabe passend zu.

(b) Kannst du bei den fehlerhaften Gleitkommazahlen sogar erklären, wo der Fehler liegt?

Quelle: LearningApps

Hinweis zur Darstellung mit Exponenten

Man darf das „e“ in Python auch großschreiben. Für die weitere Betrachtung gehen wir meistens von einem kleinen „e“ aus, damit wir keine Verwirrung mit Terminal- und Nichtterminalsymbolen stiften.

Die Sprache der Python-Gleitkommazahlen

Die Sprache der Python-Gleitkommazahlen lässt sich wie folgt mit Syntaxdiagrammen präzise beschreiben.

floatnumber:

Syntaxdiagramm

pointfloat:

Syntaxdiagramm

exponentfloat:

Syntaxdiagramm

intpart:

Syntaxdiagramm

fraction:

Syntaxdiagramm

exponent:

Syntaxdiagramm

digit:

Syntaxdiagramm

Passend zu diesen Syntaxdiagrammen kann man die Sprache der Python-Gleitkommazahlen mit einer Grammatik präzisieren.

Grammatikregeln - in EBNF Grammatikregeln - als Produktionen
floatnumber ::= pointfloat | exponentfloat
floatnumber -> pointfloat
floatnumber -> exponentfloat
pointfloat ::= [intpart] fraction | intpart "."
pointfloat -> fraction
pointfloat -> intpart fraction
pointfloat -> intpart "."
exponentfloat ::= (intpart | pointfloat) exponent
exponentfloat -> intpart exponent
exponentfloat -> pointfloat exponent
intpart ::= digit+
intpart -> digit
intpart -> digit intpart
fraction ::= "." digit+
fraction -> "." intpart
exponent ::= ("e" | "E") ["+" | "-"] digit+
exponent -> "e" intpart
exponent -> "E" intpart
exponent -> "e" "+" intpart
exponent -> "E" "+" intpart
exponent -> "e" "-" intpart
exponent -> "E" "-" intpart
digit ::= "0"|"1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9"
digit -> "0"
digit -> "1"
digit -> "2"
digit -> "3"
digit -> "4"
digit -> "5"
digit -> "6"
digit -> "7"
digit -> "8"
digit -> "9"

Spracherkennung mit Hilfe von Produktionen

Wenn man mit dem Startsymbol beginnt, dann kann man durch einen sukzessiven Ersetzungsprozess jede Python-Gleitkommazahl mit den Produktionen der Grammatik ableiten.

floatnumber ->
pointfloat ->
fraction ->
"." intpart ->
"." digit intpart ->
"." digit digit ->
"." "1" digit ->
"." "1" "4"

Aufgabe 2

Zeige entsprechend, dass die Zeichenkette 21. mit den Ersetzungsregeln erzeugt werden kann.

Suche

v
4.2.3.1.1.1
www.inf-schule.de/automaten-sprachen/sprachenundautomaten/spracherkennung/endlicherautomat/fallstudie_zahlen/gleitkommazahlen
www.inf-schule.de/4.2.3.1.1.1
www.inf-schule.de/@/page/JdIjtzYyDQpme0WN

Rückmeldung geben