Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Mathematik-Grundbegriffe für Programmierer

Rundungsprobleme bei Gleitkommatypen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Gerade bei mathematischen Operationen mit Gleitkommazahlen – insbesondere Division bzw. Modulo – treten häufig Rundungsprobleme auf. Hier lernen Sie, was das ist und wie Sie diesen Problemen begegnen können.
03:43

Transkript

Gewisse Operationen mit Gleitkommatypen sind in der Programmierung ziemlich kritisch. Das hängt an der internen Darstellung von Gleitkommatypen. Diese ist in vielen Programmiersprachen ähnlich und das Problem wird deswegen auch in verschiedenen Programmiersprachen auftreten. Ich habe hier mal ein kleines Java-Programm, was ein Modulo-Verfahren durchrechnet und zwar mit einem Gleitkommatypen. Allgemein sind Divisionsprozesse mit Gleitkommatypen sehr sehr kritisch und Modulo ist natürlich auch ein Divisionsprozess. Wir lassen das mal laufen, und Sie sehen, dass 7.7 mod 3 als Ergebnis dieser Operation 1.7 liefern sollte, aber Sie sehen hier auch die Ungenauigkeit, das Rundungsproblem. Wie können Sie nun solche Rundungsprobleme vermeiden? Die Antwort ist im Grunde einfach. Vermeiden Sie Gleitkommatypen, wo immer Sie sie bei mathematischen Operationen vermeiden können, insbesondere sämtlichen Divisionsprozessen und Modulo-Verfahren. Dummerweise lässt es sich eben aber auch nicht immer vermeiden. Nun kann man hier allerdings sehr oft das Problem entschärfen, indem man die Prozesse von Gleitkommatypen auf ganzzahlige Typen verlagert, denn 7.7 mod 3 ist das Gleiche wie 77 mod 30 und das Ergebnis muss dann noch durch 10 geteilt werden, also wir haben ja hier die beiden Operanden jeweils mit einer Zehnerpotenz multipliziert und die muss dann am Ende wieder geteilt werden. Das hier ist jetzt erst einmal eine reine Ganzzahloperation und da treten keine Rundungsprobleme auf. Dummerweise will ich aber hier keine Ganzzahl haben, sondern ich möchte ja eine Gleitkommazahl als Ergebnis haben. Aber auch das ist unkritisch, denn wenn man jetzt eine Division durch 10 vornimmt, dann wird in der Regel kein Rundungsproblem auftreten, denn das hier geteilt durch 10.0 ist unkritisch, relativ unkritisch. Wir lassen es nochmal laufen und sie sehen hier, es kommt 1.7 raus. Warum muss ich hier durch 10.0 teilen und nicht einfach 10? Das ist jetzt speziell Java-spezifisch, genauer genommen spezifisch für alle Programmiersprachen, die stark typisiert sind. So wäre das eine Ganzzahldivision, die liefert natürlich erst recht keine Rundungsprobleme, aber eben auch nicht das gewünschte Ergebnis vom Datentyp und natürlich auch nicht vom Wert her, deswegen muss man dafür sorgen, dass vor der oder bei der abschießenden - in Anführungszeichen - Division durch eine Zehnerpotenz auch wieder der richtige Datentyp rauskommt. Allgemein können Sie also Rundungsprobleme entschärfen, indem Sie, wenn immer möglich auf Gleitkommatypen verzichten und wenn Sie Gleitkommatypen nicht vollständig vermeiden können, dann sollten Sie die kritischen Operationen mit ganzen Zahlen durchführen, indem Sie eine Potenz von 10 auf die Operanden multiplizieren und am Schluss wieder durch die Potenzen von 10 teilen.

Mathematik-Grundbegriffe für Programmierer

Lernen Sie die Themenbereiche und Verfahren aus der Mathematik kennen, die bei der täglichen Programmierarbeit zum Einsatz kommen.

2 Std. 54 min (40 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Exklusiv für Abo-Kunden
Erscheinungsdatum:04.10.2016
Aktualisiert am:19.12.2016

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!