' schrieb:Hallo eMKay,
"Ich vergleiche die Zahlen nicht, aber ich muss eine sehr kleine Kommazahl und eine kleine Kommazahl addieren."
Um welche Werte (Größenordnungen) handelt es sich denn? Bisher hast du nur von 0.1 und 0.2 geschrieben...
Grundproblem:
Die Floatingpoint-Zahlen haben jeweils nur eine bestimmte Genauigkeit. Die beträgt bei DBL z.B. 53 bit oder auch ~16 Dezimalstellen. Liegen deine "sehr kleine" und "kleine" Zahl also 16 Zehnerpotenzen auseinander, gibt's Probleme (Rundungsfehler)...
"Leider existieren, die dort erwähnten dezimalen Datentypen, die das Problem umgehen sollen nicht in LabView oder ich bin zu doof sie zu finden."
Kennst du eine andere Programmiersprache, die diese dezimalen Datentypen von Haus aus unterstützt? Einen relativ neuen Standard, der bisher noch nicht von Hardware (d.h. CPU-Befehlen) unterstützt wird?
Alternativ kannst du ja Bibliotheken zum Rechnen mit "unbegrenzter" Genauigkeit einbinden. Der Aufwand dafür könnte aber erheblich sein...
Edit:
Nachtrag zu den CPU-Befehlen: beim 6502 konnte man in einen Dezimalmodus umschalten und dann "normale" Rechenbefehle (ADD, SUB) benutzen. Beim 68k gab's die ABCD/SBCD-Befehle zum Rechnen mit BinaryCodedDecimals. Kannst du natürlich in LabVIEW nachbauen - haben andere Leute mit den o.a. Bibliotheken ja auch schon gemacht...
Ich addierte Zahlen im Bereich von 0,0001 bis 1 und Zahlen von 7,7973687345558207E-18 bis 9,9999999999985964E-5 (direkt aus Labview kopiert). Ich hatte das Beispiel mit 0,1 und 0,2 nur verwendet um mein Problem auf einer sehr einfachen Ebene zu veranschaulichen.
Meine Zahlen liegen in der Tat weit auseinander.
Ich wusste nicht, dass diese dezimalen Datentypen nicht von Hardware unterstützt werden. Ich hatte mich nur auf den Artikel auf der oben genannten Webseite bezogen.
' schrieb:s. Gerd
DOCH, dem IST so!!!
Dieser Vergleich hinkt bzw. ist nicht zulässig. Ein Taschenrechner rechnet anders als eine FPU eines Computers.
http://www.wer-weiss-was.de/theme50/article2510135.html
Gruß, Jens
Faszinierend. Ich war mit nicht bewusst, dass eigentlch jeder ohne es zu wissen ständig ungenau rechnet. Danke für den Link mit dem Taschenrechner.
' schrieb:Hast du auch alle Controlls neu erstellt oder nur die Darstellungsart auf EXT geändert? Das hat bei mir auch nicht funktioniert... also einfach mal frische EXT Controlls ins BD ziehen.
Gruß SeBa
Ich habe alles neu erstellt. Der Unterschied ist, dass ich unter den Anzeigeformat auf "signifikante stellen" umgestellt habe und du auf "kommastellen". Wenn ich es auf Kommastellen einstelle bekomme ich auch den exakten Wert 0,300000000.. Wenn du es auf "sigifikante Stellen"umstellst wirst du sehen, dass du auch so einen "murks" rausbekommst wie ich.