LabVIEWForum.de - Gesuchter Wert wird im Array nicht gefunden

LabVIEWForum.de

Normale Version: Gesuchter Wert wird im Array nicht gefunden
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen.
Mein Problem ist, das ich ein Array habe (siehe Bild) mit den Zahlen 0, 1.50, 1.51 ... 1.94 1.95 Das ist Sonde 18.
Man sieht, das in dem Array die Zahlen 1.620E+0 und 1.630E+0 enthalten sind.
Sonde 17 zeigt, das an der Funktion "1-D Array durchsuchen" 1.620E+0 anliegt und halt das Array.
Nach Aufruf der Funktion wird mir -1 ausgegeben, anstatt der 14, die da sein sollte. Das komische ist, dass es nur bei den beiden Zahlen auftaucht und sonst nicht.
Kann sich da einer einen Reim drauch machen?
[attachment=21328]

Und eine kurze Anfängerfrage hätt ich noch:
man benötigt ja von Zeit zu Zeit mal interne Variablen um sich etwas zu speichern (Laufvariable z.B.), die den Benutzer aber nicht zu interessieren haben.
Ich habe das bis jetzt immer so gemacht, das ich ein Anzeigeelement erstelle, das benutze und dieses dann auf dem Frontpanel ausblende.
Gibt es da eine elegantere Methode?

Thomas
Schon mal was davon gehört, dass Fliesskommazahlen in der binären Computerdarstellung nicht "exakt" sind? So kann z.B. in Binärform die Zahl 0,1 nicht exakt dargestellt werden.
Und wenn dir per Sonde nur 3 Nachkommastellen angezeigt werden, dass heißt noch lange nicht, das die Zahl nicht an der 10. Nachkommstelle noch eine 1 hat.

Ist-Gleich Vergleich bei Fließkommazahlen ist immer gefährlich! Davon ist prinzipiell abzuraten.

Gruß, Jens
Danke Jens, genau das wars.
Hab mir so Abhilfe geschafft:
[attachment=21332]

Thomas
' schrieb:Und eine kurze Anfängerfrage hätt ich noch:
man benötigt ja von Zeit zu Zeit mal interne Variablen um sich etwas zu speichern (Laufvariable z.B.), die den Benutzer aber nicht zu interessieren haben.
Ich habe das bis jetzt immer so gemacht, das ich ein Anzeigeelement erstelle, das benutze und dieses dann auf dem Frontpanel ausblende.
Gibt es da eine elegantere Methode?

Um Variablen zwischen zu speichern würde ich dir ein uninitialisiertes Shift-Register empfehlen:
[attachment=21336]
LabVIEW Version 8.5.1

Der Wert ist im Shift-Register bis zu einer neuen Initialisierung gespeichert, mittels dem Enum kannst du zusätzliche Funktionen hinzufügen.
Wichtig ist, dass die Schleife nur einmal durchlaufen wird
Das bedeutet aber, dass ich, um mir diese interne Variable zu schaffen, immer noch das Ausgabeelement benötige.
Es geht ja um einen zwischenspeicher den ich intern im Blockdiagramm nutze. Wenn ich z.B. ein Array habe und will wissen wie oft die Zahl 17 darin vorkommt, weil ich die Anzahl später noch mal brauche. Dann habe ich mir diese Interne Variable immer wie oben beschrieben erschaffen.

Thomas
Anstatt des Enum-Controls kannst du eine Konstante verwenden und somit brauchst du kein Control um eine Variable zwischen zu speichern.
Ein weiterer Vorteil liegt darin, dass die Variable in einem SubVI gespeichert ist und nur ein Zugriff möglich ist. Dadurch werden z.B. Race Conditions vermieden

Bei weiteren Fragen einfach fragenTongue
*Klick*
Alles klar. In ein SubVI packen... so einfach gehts. Jap. Das wäre eine gute Alternative;)Danke.
Referenz-URLs