Fliegende Punkte



  • Gibt es noch populäre Systeme die nicht IEEE 754 nutzen?
    Können zwei Systeme die IEEE 754 nutzen eine unterschiedliche Endianess bei Floating-Point Typen haben, oder bezieht diese sich nur auf Integer-Typen?
    Welche Probleme könnten auftreten, wenn man Floating-Point Daten binär über mehrere Systeme verwendet, die alle IEEE 754 nutzen?


  • Mod

    Embeddedsysteme haben eventuell gar keine Fließkommaunterstützung. Ansonsten kannst du dich eigentlich schon darauf verlassen, dass eine Fließkommaimplementierung auf jedem System, das du heute noch antriffst, IEEE 754 kompatibel ist.

    IEEE 754 macht keine Aussagen über die Endianess. Aber wie oben kannst du davon ausgehen, dass alle Implementierungen denen man realistisch begegnen kann, zueinander kompatibel sind.

    Welche Probleme könnten auftreten, wenn man Floating-Point Daten binär über mehrere Systeme verwendet, die alle IEEE 754 nutzen?

    Aufgrund obiger Aussagen: Praktisch keine. Aber möchtest du wirklich Intermaschinenkommunikation selber entwickeln? Das Problem wurde auf der Welt schon 1489349804 Mal gelöst und die guten Lösungen gibt es als freie Bibliotheken. Dann musst du dich nicht um solchen Scheiß kümmern und kannst dich aufs Wesentliche konzentrieren.



  • Danke für diese Antwort. Meine Anwendung zielt nur auf Desktopsysteme ab, insofern werde ich einfach versuchen ein paar assert() einzubauen, so dass man zumindest einen ordentlichen Fehler bekommt.

    Zu den Bibliotheken: Ja, aber so muss ich realistischerweise nichts neu erfinden, außer dass ich die Dateien 1 : 1 binär lese. Oder übersehe ich da noch etwas? Dass ich die Daten in Text und zurück umwandeln muss, möchte ich ja gerade vermeiden.


  • Mod

    Achso, ich dachte es ginge um vernetzte Kommunikation, nicht das Lesen von Dateien. Dann gibt's natürlich nichts neu zu erfinden.

    Ich bin im Allgemeinen kein großer Fan von Binärformaten. Man büßt damit ein wenig Portabilität ein (nicht wirklich relevant, wie oben erklärt) und es kann kein Mensch mehr lesen. Letzteres halte ich schon für wichtiger, als beim Programmstart eine Milisekunde und auf der Platte ein paar Megabytes zu sparen. Ganz besonders beim Debuggen ist es doch eine sehr gute Sache, wenn man Zahlen als Programmierer direkt lesen und vergleichen kann oder auch mal von Hand editieren kann. Und es ist einfacher, andere Programme zu entwickeln, die dieses Dateiformat benutzen, weil diese sich nicht sklavisch daran halten müssen, wie die Datentstrukturen intern aussehen müssen, sondern die Zahlen nach ihren eigenen Bedürfnissen benutzen können. Und es ist viel leichter, menschengeschriebene Filterprogramme (grep, sed, awk) auf die Zahlen loszulassen.

    P.S.: "floating" heißt übrigens nicht "fliegend".



  • Bei Einstellungen etc. stimme ich dir voll zu. Aber wenn man eine Datei einlesen muss, in der einfach nur x-millionen floats hintereinander stehen, ist das schon ein ziemlicher Performancevorteil. ( > 2.5 Sekunden vs. nix)
    Und das Lesen ist da auch nicht mehr so arg spannend. 🤡

    Und lass meine gleitenden Schweber in Ruhe, die könne nämlich sehr wohl fliegen!


Anmelden zum Antworten