LabVIEWForum.de - Wert in einem Array suchen

LabVIEWForum.de

Normale Version: Wert in einem Array suchen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen!

Ich möchte aus einer Matrix (2 Spalten & viele Zeilen) die erste Spalte ausschneiden und anschliessend in dieser nach einem bestimmten Wert suchen. Die erste Spalte sieht wie folgt aus: -100, -99.9, -99.8, -99.7, usw.
Die Suche funktioniert leider nur bei Werten wie -100, -99.5, -99.0, -98.5, usw. Die Frage ist nun wieso?


Hier noch das Schema:
[attachment=8319]

P.S.:Wenn ich direkt in einem konstanten Array suche funktioniert es problemlos bei allen Werten!
Also so:
[attachment=8322]


Vielen Dank schon mal für eure Hilfe!

Gruss Oli
Bei welchen Werten funktioniert es beispielsweise NICHT?

Ich könnte mir vorstellen, dass das an der Genauigkeit liegt...DBL + SGL-Werte sollten besser mit >= bzw. <= gesucht werden...dazu müsstest du deine Suche halt ein wenig umbauen...Tipp: An die Vergleichsoperatoren kann man auch direkt Arrays anschließen!
Die Antwort ist ziemlich einfach: das sind Fliesskommazahlen.

Mach mal eine numerische Konstante vom Typ Single. Dann Rechtsklick und dann Format&Precision. Stelle für die Anzeige viele Nachkommastellen ein. Du wirst sehen, dass z.B. aus einer 1.6 eine 1.600000023842 wird. Wie soll denn das SuchVI diese beide Zahlen vergleichen?

Möglich wäre z.B. eine Aufrundung & Vergleich. Da muss man aber was basteln.

eg
Irgendwo in der LV Hilfe habe ich gelesen, dass man nie Fliesskommazahlen mit einem = vergleichen soll. Man nehme lieber >= oder <= . Dies gilt für alle Programmiersprachen.

eg
Vielen Dank für die schnelle Hilfe!

Das Problem war genau wie beschrieben, dass die Werte bei den hinteren Kommastellen nicht alle Null waren.

Ich habe es nun mit runden gelöst.
Da meine Werte höchstens eine Kommastelle haben, habe ich alle Werte zuerst mit 10 multipliziert und danach auf eine ganze Zahl gerundet.

[attachment=8323]


Danke nochmals an alle!

Gruss Oli
Dais
Also bei mir klappt es, aber ich habe Dir ein Bsp. gemacht, wie Du es probieren könntest.

Schau' Dir die untere Whileschleife dazu an.

Gruß Markus

EDIT: Mist da war ich am basteln, wurde unterbrochen und bin nun natürlich zu spät dran..... aber Du hast es echt gut gelöst. Wink
' schrieb:Also bei mir klappt es, aber ich habe Dir ein Bsp. gemacht, wie Du es probieren könntest.

Schau' Dir die untere Whileschleife dazu an.

Gruß Markus

EDIT: Mist da war ich am basteln, wurde unterbrochen und bin nun natürlich zu spät dran..... aber Du hast es echt gut gelöst. Wink

Hallo

leider kann ich dein Vi nich anschauen, da ich LabVIEW 7.1 habe. Aber ich habs ja nun wie gezeigt gelöst.
Trotzdem vielen Dank für deine Mühe!!!

Gruss Oli
Referenz-URLs