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!
ich habe zwei Zahlen vom Datentyp SGL, deren Wert ich vergleichen möchte. Wenn ich nun mein Programm durchlaufen lasse und beide Zahlen den Wert -0.91574 annehmen, zeigt mein Vergleicher immer noch FALSE an. Was habe ich verkehrt gemacht? Besten Dank!
normalerweise sollte das schon klappen.
Lade dein VI einmal hoch. Vielleicht hast du auch zu wenig Kommastellen eingeblendet und die Zahlen sind tatsächlich unterschiedlich...
lg panduci
Es gibt zweierlei Arten von Neugier:
1) Die eine aus Eigennutz, die uns antreibt zu erfahren, was uns nützen kann.
2) Die andere aus Stolz, die dem Trieb entspringt, zu wissen, was andere nicht wissen.
Ich habe eine Zahl invertiert und dann beide Werte aufaddiert. Als Ergebnis habe ich den Wert 1.19209E-7 erhalten. Das heißt beide Zahlen sind tatsächlich unterschiedlich. Jetzt sollte ich die Zahlen runden? Wie kann ich beide Zahlen auf drei Stellen nach dem Komma runden?
Multiplizieren mit 1000 und dann auf Integer wandeln....Anschließend wieder durch 1000 dividieren.
lg panduci
Es gibt zweierlei Arten von Neugier:
1) Die eine aus Eigennutz, die uns antreibt zu erfahren, was uns nützen kann.
2) Die andere aus Stolz, die dem Trieb entspringt, zu wissen, was andere nicht wissen.
(08.09.2015 15:55 )THL schrieb: Für eine Anwendung, bei der es um den Vergleich zweier DBL-Zahlen ging, habe ich mir mit dem nachfolgenden VI geholfen.
Dein VI ist ja wirklich perfekt, und mich wundert seit Jahren, dass NI nicht mal auf die schöne Idee kommt, genau diese Funktion (- als mit der rechten Maustaste anzuklickenden Modus -) mit in die Gleich- und Ungleich-Funktionen einzubauen.
Also:
Normalmodus: exakt gleich, so wie bisher.
Weiterer Modus: Innerhalb der Maschinengenauigkeit gleich.
Wenn man bedenkt, wie viele Anfagen hierzu uns im Forum dann erspart blieben...
Diese Funktion nutze ich seit Jahren, nunmehr habe ich aber einen Bug gefunden! Diese Funktion funktioniert NICHT !, wenn beide Zahlen 0 sind, weil null mal irgendwas gibt null, somit beisst die Katze sich in den Schwanz.
Warum im unteren Zweig statt die Subtraktion nicht einfach auf 2x Epsilon vergleichen ?
oben (x-y) Absolut muss kleiner als 2x Epsilon sein. Fertig.
Erfahrung ist die Summe der gemachten Fehler
KISS - Keep it simple and stupid
Walking on water and developing software from a specification are easy if both are frozen. – Edward V Berard
22.10.2020, 12:24 (Dieser Beitrag wurde zuletzt bearbeitet: 22.10.2020 12:34 von GerdW.)
Zitat:Warum im unteren Zweig statt die Subtraktion nicht einfach auf 2x Epsilon vergleichen ?
Weil Epsilon die Maschinengenauigkeit (aka Auflösung) des Wertes "1" darstellt.
Wenn man jetzt Werte in anderen Größenordnungen vergleichen will, muss man Epsilon entsprechend skalieren - was hier über die Multiplikation mit abs(Y) erledigt wird.
"Aus dem Bauch heraus" würde ich dann eher eine Sonderbehandlung für den Fall X=Y=0 einbauen…