LabVIEWForum.de - Numeric Control erreicht Maximum nicht

LabVIEWForum.de

Normale Version: Numeric Control erreicht Maximum nicht
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

bitte mich nicht auslachen, aber ich schaffe es nicht die Einstellungen so zu setzen, damit man bei meinem Numeric Control das Maximum erreicht. Das sind die versuchten Einstellungen.

Minimum = 0 (Coerce)
Maximum = 1 (Coerce)
Increment = 0,05 (alles ausprobiert)

Wenn ich das Numeric Control inkrementiere, erreicht es nur 0,95. Sobald ich den Wert "1" per Hand eintippe und danach versuche über den Increment/Decrement-Pfeil auf die "1" zu erhöhen klappt es.

Ich hoffe ihr könnt mir bei diesem trivialen Problem helfen.

Vielen Dank
Hallo YYY,

das Problem liegt in der begrenzten Genauigkeit von Float-Zahlen - und wurde hier schon desöfteren diskutiert...

Das Inkrement "0,05" kann nicht als DBL-Wert dargestellt werden, da es ein unendlicher Binärbruch ist. Wenn du dann noch anfängst, diesen Wert aufzuaddieren (jeweils um 0,05 erhöhen), ergeben sich sehr schnell Fehler durch Rundungseffekte. Diese führen dazu, dass du zwar 0,95 in der Anzeige siehst, aber intern mit 0,9500..0019 (o.ä.) gerechnet wird und man deshalb mit einem weiteren Inkrement über die 1 hinausschießen würde - also bleibt die Anzeige bei ~0,95 stehen. Gibst du dann eine 1 händisch ein, werden die aufgelaufenen Rundungsfehler gelöscht und du kannst erstmal wieder den Wert (anscheinend) korrekt ändern...

Lösungsvorschläge:
- Diese Anzeige auf Prozent-Werte umstellen, dann könntest du einerseits mit Integer arbeiten (die diese Fehler nicht zeigen) oder problemlos mit DBL und ganzzahligen Werten...
- Das Max auf 1,0001 erhöhen und den Eingabewert mit InRangeAndCoerce auf 0..1 begrenzen...

Weiterführende Literatur: hier oder hier oder in meiner Signatur
Referenz-URLs