Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
20.12.2012, 12:01 (Dieser Beitrag wurde zuletzt bearbeitet: 20.12.2012 12:03 von Widar.)
Ich habe ein kleines Programm erstellt das mir die Anzahl Nullen ausgibt, welche mittels Start, Stopp und Schrittwerte erzeugt werden. Soweit eigentlich alles klar und nicht schwer zu programmieren. Allerdings habe ich komischerweise wenn der letzte Wert (0.1-0.1) ausgegeben wird keine "Null" sondern einen falschen Wert (1.39E-16). Wieso ist dies so? Oder was mache isch falsch?
Dies tritt zum beispiel bei "Start = 1", "Stopp = 0", "Schritte = 0.1", auf.
Habe ich das richtig verstanden? Labview rechnet nicht mit 0.1-0.1=0 sondern z.B. 0.0999998456464-0.0999998456464=1.39E-16 zeigt jedoch beide 0.0999998456464 Werte als 0.1 an?
20.12.2012, 13:33 (Dieser Beitrag wurde zuletzt bearbeitet: 20.12.2012 13:37 von Lucki.)
Ganz recht: Die Frage, ob zwei Zahlen gleich sind, sollte man bei Gleitkommazahlen gar nicht stellen. Sinnvolle Fragestellung ist nur: Sind zwei Zahlen innerhalb einer gegebenen Toleranzbandbreite gleich? Die geringstmögliche sinnvolle Toleranz ist durch die Maschinentoleranz gegeben. Dafür gibt es eine LV-Konstante, die man anwenden kann - wie siehe Wikipedia.
Offtopic: Wenn ein "LVF-Grünschnabel" dreist mit der Behauptung "Labview rechnet falsch" daherkommt, statt Fehler oder Wissenslücken bei sich zu suchen, so zeugt das von patologischer Selbstüberschätzung. Mildernder Umstand: Die Krankheit ist heutzutage eine Massenseuche.
20.12.2012, 13:45 (Dieser Beitrag wurde zuletzt bearbeitet: 20.12.2012 13:47 von Widar.)
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
RE: Labview rechnet falsch
Nicht nur LabVIEW. Das Problem ist allgemein.
Gruß Markus
(20.12.2012 13:15 )Widar schrieb: Labview rechnet nicht mit 0.1-0.1=0 sondern z.B. 0.0999998456464-0.0999998456464=1.39E-16 zeigt jedoch beide 0.0999998456464 Werte als 0.1 an?
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
Anzeige
20.12.2012, 13:58 (Dieser Beitrag wurde zuletzt bearbeitet: 20.12.2012 14:09 von Lucki.)
Anwendung der Maschinentoleranz-Konstante:
Die Toleranz gilt bei einem Zahlenwert von 1. Bei anderen Zahlen müßte die Konstante noch mit der Zahl multipliziert werden, um auf die Toleranz zu kommen. So habe ich es in Wikipedia irgendwo gelesen. In der LV-Hilfe habe ich dazu nichts gefunden, aber falls es da doch etwas gibt, wäre das natürlich höher priorisiert.
Übrigens: Zur Erzeugung deines Arrays gibt es das VI "Rampenfunktion"
P-S:
Ich warte übrigens seit Jahren darauf, dass bei NI mal jemand auf die Idee kommt, in einer neuen Version von LV die "="-Funktion zu verbesseren. Mit der rechten Maustaste sollte es möglich sein, im Falle von Gleitkommazahlen oder von Clusteren, die solche enthalten, die Option "Gleich innerhab der Maschinentoleranz" zu wählen.
(20.12.2012 13:58 )Lucki schrieb: P-S:
Ich warte übrigens seit Jahren darauf, dass bei NI mal jemand auf die Idee kommt, in einer neuen Version von LV die "="-Funktion zu verbesseren. Mit der rechten Maustaste sollte es möglich sein, im Falle von Gleitkommazahlen oder von Clusteren, die solche enthalten, die Option "Gleich innerhab der Maschinentoleranz" zu wählen.
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------