Verfasst am: 17.12.2010, 16:26
Titel: Problem Datengenauigkeit Single/Double etc.
Hallo zusammen,
ich bin zwar recht unerfahren in Matlab, aber nicht im allgemeinen Programmieren, dashalb kann ich folgendes Matlab-Verhalten nicht so recht verstehen:
Dass die Umwandlung zwischen DOUBLE und SINGLE zu unterschiedlichen Zahlen führen kann, ist logisch. Wieso ist das ein Problem?
Mein Problem ist, das ich als Ergebnis genau DOUBLE 0,0075 brauche. Ich kann mich nicht errinnern, dass ich bei anderen Programmierssprachen so große bzw. überhaupt Abweichungen zwischen den Werten in unterschiedlichen Datentypen habe (Zumindest bei solch einfachen Zahlen).
Zitat:
Die Menge ohne Duplikate hast Du ja nach UNIQUE.
Eben nicht, in der "gesamtmenge" existiert zwei Mal der Wer 0,072
Zitat:
Was ist "die Different zwischen den Mengenelementen"
Letzendlich brauche ich sogesehen, den Abstand zwischen den einzelnen Elementen, also menge(2) - menge(1), menge(3)-menge(2).....
Gibt es noch Lösungvorschläge für eine exakte Lösung?
Mein Problem ist, das ich als Ergebnis genau DOUBLE 0,0075 brauche.
Computer-Prozessoren rechnen im Binärsystem. Deshalb können manche Zahlen nicht "exakt" dargestellt werden, da sie einfach keine endlich repräsentierbare Binärzahl sind. Es gibt zwar Mathematik-Programme, die mit beliebiger Genauigkeit rechnen können, aber auch dann heißt "beliebig" nicht "unendlich genau".
Das Problem betrifft also alle Programmiersprachen -- falls man es überhaupt "Problem" nennen kann. Es ist nämlich in den IEEE 754 eindeutig definiert, wie sich die SINGLE und DOUBLE Zahlen verhalten sollen. Und damit ist das Problem wissenschaftlich gesehen gelöst.
Leider ist das offensichtlich nicht sehr intuitiv und viele Benutzer sind von den Auswirkungen verwirrt.
Zitat:
Zitat:
Die Menge ohne Duplikate hast Du ja nach UNIQUE.
Eben nicht, in der "gesamtmenge" existiert zwei Mal der Wer 0,072
Doch. Nach UNIQUE ist der Vektor eindeutig. Garantiert!
Das 0.072 und 0.071999999999999 nicht identisch sind, ist also kein Problem von Matlab, sondern exatkt gerechnet!
Und natürlich wird bei der Transformation von DOUBLEs zu SINGLEs der Wert von Zahlen geändert. Zwar bleiben 1.0 und 2.0 dabei unverändert, aber 12345678901234567.0 z.B. bestimmt nicht.
Die gewünschte Different kannst Du zum Schluß mit dem DIFF-Befehl berechnen.
Gruß, Jan
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.