INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Zahlenverwirrung // 2.85 != 2.85?



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!

17.04.2012, 14:05
Beitrag #1

Kasi Offline
LVF-Stammgast
***


Beiträge: 342
Registriert seit: Dec 2010

6 - 2009
2005
DE_EN

79194
Deutschland
Zahlenverwirrung // 2.85 != 2.85?
Hallo zusammen,

nachdem ich heute versucht habe, ein Problem bei einer Arraysuche einzugrenzen konnte ich es irgendwann auf folgendes in meinen Augen verwirrendes VI runterkochen:

8.0 .vi  un_equal_numbers.vi (Größe: 6,97 KB / Downloads: 186)

Im oberen Vergleich ist der Code, der letztlich die fehlgeschlagene Ursache verursacht, und mir sagt, dass 2.85 != 2.85 sei. Unten habe ich dann testweise den Inhalt der einen Konstante in den der anderen kopiert, was eine Gleichheit der Konstanten bewirkt.
Die Frage ist: Was unterscheidet die obigen Konstanten voneinander? Beide sind DBL, beide sind nicht durch irgendwelche Formatierungen verkürzt/verändert, ich habe keine Ahnung, wieso Labview mir meldet, dass sie ungleich sind.

Kann mir jemand den Grund nennen? Danke!
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
17.04.2012, 14:10 (Dieser Beitrag wurde zuletzt bearbeitet: 17.04.2012 14:11 von Achim.)
Beitrag #2

Achim Offline
*****
*****


Beiträge: 4.223
Registriert seit: Nov 2005

20xx
2000
EN

978xx
Deutschland
RE: Zahlenverwirrung // 2.85 != 2.85?
Gleitkomma DARF man nicht auf "gleich" vergleichen...NIE!

   

"Is there some mightier sage, of whom we have yet to learn?"

"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.04.2012, 14:10 (Dieser Beitrag wurde zuletzt bearbeitet: 17.04.2012 14:11 von jg.)
Beitrag #3

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Zahlenverwirrung // 2.85 != 2.85?
Schon mal die Anzahl der Nachkommastellen erhöht?
   
Gleichheitsvergleich bei Fließkommazahlen funktioniert sehr gerne mal nicht.

Gruß, Jens

EDIT: Mist, Achim war schneller. Wink

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.04.2012, 14:13
Beitrag #4

Kasi Offline
LVF-Stammgast
***


Beiträge: 342
Registriert seit: Dec 2010

6 - 2009
2005
DE_EN

79194
Deutschland
RE: Zahlenverwirrung // 2.85 != 2.85?
Autsch, ich hatte nach der fünften Nachkommastelle aufgehört.... das heisst dann wohl Runden? Oder gibt's elegantere Möglichkeiten, Gleichheit auf signifikante Stellen zu überprüfen?
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.04.2012, 14:14 (Dieser Beitrag wurde zuletzt bearbeitet: 17.04.2012 14:16 von Achim.)
Beitrag #5

Achim Offline
*****
*****


Beiträge: 4.223
Registriert seit: Nov 2005

20xx
2000
EN

978xx
Deutschland
RE: Zahlenverwirrung // 2.85 != 2.85?

Akzeptierte Lösung

"In Range"

Alternativ: den sichtbaren "Text" des NumericControl extrahieren und dann wieder in eine Zahl wandeln...da wird dann einfach abgeschnitten.

"Is there some mightier sage, of whom we have yet to learn?"

"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.04.2012, 14:18 (Dieser Beitrag wurde zuletzt bearbeitet: 17.04.2012 14:20 von Kasi.)
Beitrag #6

Kasi Offline
LVF-Stammgast
***


Beiträge: 342
Registriert seit: Dec 2010

6 - 2009
2005
DE_EN

79194
Deutschland
RE: Zahlenverwirrung // 2.85 != 2.85?
mhmhm....nicht das, was mir unter elegant vorschwebt, aber ne Lösung. Danke Euch beiden für die schnelle Hilfe. Ich erinnere mich an Informatikstunden vor 15 Jahren, wo diese Problematik mal in einem Turbo Pascal Beispiel beschrieben wurde, aber dieses Wissen ging über die Jahre verloren Wink

----
Die bearbeitete Lösung gefällt mir besser, allerdings muss ich im Originalprogramm nochmal schauen, woher genau die Zahlen kamen und ob das so umsetzbar ist. danke nochmal!
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.04.2012, 14:27
Beitrag #7

Achim Offline
*****
*****


Beiträge: 4.223
Registriert seit: Nov 2005

20xx
2000
EN

978xx
Deutschland
RE: Zahlenverwirrung // 2.85 != 2.85?
Noch ne Alternative...kam grad von meiner Kollegin:

Beide Zahlen voneinander subtrahieren und auf "=0" prüfen...da gibts ja ne Primitive dafür!

A.

"Is there some mightier sage, of whom we have yet to learn?"

"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.04.2012, 14:30
Beitrag #8

Kasi Offline
LVF-Stammgast
***


Beiträge: 342
Registriert seit: Dec 2010

6 - 2009
2005
DE_EN

79194
Deutschland
RE: Zahlenverwirrung // 2.85 != 2.85?
Das läuft dann aber wieder auf die gleiche Problematik, da die in der 15ten Nachkommastelle ungleichen Zahlen auch nicht Null in der Differenz ergeben.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.04.2012, 14:38
Beitrag #9

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Zahlenverwirrung // 2.85 != 2.85?

Akzeptierte Lösung

Hallo,

die Lösung wurde schon genannt: InRangeAndCoerce!

bool = InRangeAndCoerce(0;abs(x-y);epsilon)

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.04.2012, 14:44
Beitrag #10

Kasi Offline
LVF-Stammgast
***


Beiträge: 342
Registriert seit: Dec 2010

6 - 2009
2005
DE_EN

79194
Deutschland
RE: Zahlenverwirrung // 2.85 != 2.85?
Okay, damit ist mein Problem zur Gänze gelöst! Ich nehme aus der heutigen Stunde mit, nie wieder DBL vergleichen.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Gehe zu: