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 

Dieses Thema hat akzeptierte Lösungen:

Kehrwertergebnis im Anzeigeelement fehlerhaft



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!

19.05.2022, 11:08
Beitrag #1

L@BTR0N Offline
LVF-Grünschnabel
*


Beiträge: 28
Registriert seit: Apr 2010

2016
2008
DE


Deutschland
Kehrwertergebnis im Anzeigeelement fehlerhaft
Hallo LabVIEW-User,

bei der Berechnung eines Werts mit der Kehrwertfunktion ist mir aufgefallen, wenn
man die Darstellung des Anzeigeelements bei 14 Nachkommastellen einstellt, kommt
dabei keine Runde Zahl wie zu erwarten raus. Ist das ein Darstellungsfehler?

   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
19.05.2022, 11:20 (Dieser Beitrag wurde zuletzt bearbeitet: 19.05.2022 11:20 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Kehrwertergebnis im Anzeigeelement fehlerhaft
Hallo Labtron,

Zitat:bei der Berechnung eines Werts mit der Kehrwertfunktion ist mir aufgefallen, wenn man die Darstellung des Anzeigeelements bei 14 Nachkommastellen einstellt, kommt dabei keine Runde Zahl wie zu erwarten raus. Ist das ein Darstellungsfehler?
Nein, das ist kein Darstellungsfehler. Das ist wirklich der berechnete Wert - und der ist sogar korrekt berechnet! Big Grin

Du bist gerade in die Falle getappt, die das Rechnen mit Float-Zahlen mitbringt. Diese sind nur "ungefähr", insbesondere bei Eingangswerten wie deinen.
Stell doch mal die Anzeige deines Inputs auf 14-17 Stellen um, dann wirst du sehen, dass du NICHT den Kehrwert von 0.0002=1/5000 berechnest…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.05.2022, 12:19 (Dieser Beitrag wurde zuletzt bearbeitet: 19.05.2022 12:48 von L@BTR0N.)
Beitrag #3

L@BTR0N Offline
LVF-Grünschnabel
*


Beiträge: 28
Registriert seit: Apr 2010

2016
2008
DE


Deutschland
RE: Kehrwertergebnis im Anzeigeelement fehlerhaft
Hallo GerdW,

hab den Eingang auf 20 Stellen umgestellt, und da zeigt es "0,00020000000000000001" an. Dann ist auch kein wunder, dass bei Double die eh nur ne 15 stellige Genauigkeit kann.
Jedoch stelle ich mir die Frage, wo die 1 herkommt, die ich ja nicht eingegeben habe. Das ganze ist mir nur aufgefallen, weil ich den ergebniswert in die Exceltabelle exportiert habe und dort
im Vergleich keine übereinstimmung gefunden habe. Dort zeigt es stramm die 5000 an, auch wenns 30 stellen hat.

Nachtrag: Habs nochmal probiert, den Eingangswert vorher zu runden. Trotzdem hauts am ende das gleiche Ergebnis wie vorher auch raus.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.05.2022, 14:02 (Dieser Beitrag wurde zuletzt bearbeitet: 19.05.2022 14:06 von GerdW.)
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Kehrwertergebnis im Anzeigeelement fehlerhaft

Akzeptierte Lösung

Hallo Labtron,

Zitat:Jedoch stelle ich mir die Frage, wo die 1 herkommt, die ich ja nicht eingegeben habe.
Ganz einfach:
FloatingPoint-Zahlen haben eine begrenzte Genauigkeit UND eine begrenzte Auflösung!
DBL-Zahlen haben 53bit Mantisse: die Auflösung ergibt sich damit zu 2^(exponent-53). (Vielleicht liege ich 1bit daneben mit der Formel, aber die Prinziprechnung bleibt.)

Und da Floats üblicherweise als Binärwerte kodiert werden, kommt noch hinzu, dass alle Brüche mit 10er Potenzen im Binärsystem unendliche Brüche sind! Damit können solche Werte, die im Dezimalsystem "glatte" Nachkommastellen haben, nicht exakt im Binärsystem dargestellt werden. Und deine 0.0002 sind eben 2*10^-4…
Runden der Floatzahl auf 5 Nachkommastellen ergibt so auch keinen Sinn: sobald du irgendwie wieder auf den Zahlenwert 0.0002 zurückrechnest (entweder durch Umwandeln eines Strings "0.0002" in eine Float-Zahl oder durch dividieren von 2 durch 10^4) bekommst du wieder einen Floatwert, der eben möglichst genau den Wert 0.0002 repräsentiert - aber eben nicht exakt!

Diese Rundungsproblematik findest du in vielen Threads hier im LabVIEW-Forum, im NI-Forum und in diversen anderen (Programmier-)Foren! Lies dir bitte die Grundlagen zu Floatzahlen durch…

Daraus ergeben sich Grundregeln im Umgang mit Floats:
- NIE auf Gleichheit prüfen (zumindest bei Rechenwerten)!
- Dran denken, dass es für den (gültigen!) Wert NaN ebenfalls klar definierte Rechenregeln gibt…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.05.2022, 18:38
Beitrag #5

L@BTR0N Offline
LVF-Grünschnabel
*


Beiträge: 28
Registriert seit: Apr 2010

2016
2008
DE


Deutschland
RE: Kehrwertergebnis im Anzeigeelement fehlerhaft
In der Zwischenzeit bin ich ja auch fündig geworden, auch über Deine Signatur hinterlegten Verweis auf das Dokument "floating_point_in_labview.pdf" gestossen. Deine
Antwort jetzt ist auch nochmal schön Zusammengefasst, danke dafür. Hab ja vorher schon per Google-Suche recherchieren wollen. Die Verweise auf ni.com sind durch das
neue Homepage von denen nutzlos geworden. Sie führen einfach ins Leere.

Jedefalls habe ich den vergleich einfach umgekehrt, und den ergebniswert aus Excel ins LabVIEW kopiert, und da der String eh noch in double formatiert werden musste, passte am Ende
auch wieder.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.05.2022, 10:15
Beitrag #6

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


Beiträge: 4.223
Registriert seit: Nov 2005

20xx
2000
EN

978xx
Deutschland
RE: Kehrwertergebnis im Anzeigeelement fehlerhaft
Sers...
Mir ist die ganze Thematik natürlich geläufig, und da fall ich nicht mehr drauf rein ;-)

Was ich mich aber schon oft gefragt hab: Was macht EXCEL anders? Sind die MS-Leute schlauer als alle anderen Menschen? Wie fangen die das Problem ab? Die haben doch die genau gleichen Speicher- und Darstellungs-Probleme...

Gruß
Achim

"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
Anzeige
20.05.2022, 12:19
Beitrag #7

L@BTR0N Offline
LVF-Grünschnabel
*


Beiträge: 28
Registriert seit: Apr 2010

2016
2008
DE


Deutschland
RE: Kehrwertergebnis im Anzeigeelement fehlerhaft
(20.05.2022 10:15 )Achim schrieb:  Was ich mich aber schon oft gefragt hab: Was macht EXCEL anders? Sind die MS-Leute schlauer als alle anderen Menschen? Wie fangen die das Problem ab? Die haben doch die genau gleichen Speicher- und Darstellungs-Probleme...

Ich vermute einfach mal, dass das bereits programmintern berücksichtigt wird. Wie GerdW schon darauf verweist, gehört diese Thematik auch zum Grundwissen der Programmierung. Wenn aber das grundlegend
bekannt ist, warum fügt NI nicht einfach eine weitere Vergleichsfunktion zur Palette hinzu. Im dem anderen Thread unter Beitrag Nr. 7 wird das auch gefragt.

L@BTR0N schrieb:Das ganze ist mir nur aufgefallen, weil ich den ergebniswert in die Exceltabelle exportiert habe ...

Excel nutze hab ich einfachshalber genommen, um z.B. Ergebniswerte eines Formelknotens nachprüfen zu können. Bei wenigen Nachkommastellen ist das auch nie das Thema gewesen. Dennoch unschön, wenn es schon durchs kopieren daran scheitert und zunächst erstmal ein Fehler in der Formel sucht.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.05.2022, 12:41
Beitrag #8

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Kehrwertergebnis im Anzeigeelement fehlerhaft
Hallo Labtron,

Zitat:Wenn aber das grundlegend bekannt ist, warum fügt NI nicht einfach eine weitere Vergleichsfunktion zur Palette hinzu.
Weil NI die IEEE854-Standard-konformen Funktionen bereitstellt.

Wenn du einen "ungenauen" Vergleich machen willst, kannst du ihn dir einfach selbst programmieren und als subVI in deine user.lib einfügen. Big Grin
(Dann hast du auch freie Hand, wie "ungenau" du auf Gleichheit prüfen willst…)

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.05.2022, 21:47
Beitrag #9

Martin.Henz Offline
LVF-Team
LVF-Team

Beiträge: 429
Registriert seit: Jan 2005

2.5.1 bis 20
1992
kA

74363
Deutschland
RE: Kehrwertergebnis im Anzeigeelement fehlerhaft
(20.05.2022 10:15 )Achim schrieb:  Was macht EXCEL anders? Sind die MS-Leute schlauer als alle anderen Menschen? Wie fangen die das Problem ab?

Nö, die sind nicht schlauer - nur genervt ....
Ich setze jetzt mal ein Gerücht in die Welt:
Der durchschnittliche Benutzer von Exel hat keine Ahnung von Floating-Point Zahlen und rennt damit immer wieder mal gegen die Wand und versteht die Welt nicht mehr. Das kann man dem auch nicht durch sachlich korrekte Erklärungen beibringen. Das nervt dann natürlich dann auch die Softwerker bei Microsoft, also haben sie das Problem einfach beseitigt indem vor der Darstellung passend gerundet wird.

Es lässt sich ja feststellen, wie viele Stellen eine Zahl hat, wenn in kauf genommen wird, dass es eine kleine Abweichung geben darf. Dann wird gerundet und alles ist gut. Zur Darstellung könnet auch einfach auf z.B. 13 Stellen gerundet werden.

Martin Henz
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  LED-Anzeigeelement mit runden Ecken nixblicker 9 5.556 30.10.2020 09:23
Letzter Beitrag: Lucki
  Werte aus Array als Anzeigeelement ares2013 11 9.391 30.04.2019 14:28
Letzter Beitrag: ares2013
  Anzeigeelement modifizieren Mechatroniker28 12 9.376 21.03.2018 11:43
Letzter Beitrag: Mechatroniker28
  HintergrundFarbe Bedien-/Anzeigeelement ändern - schwarz/grau t.hipp 4 4.896 19.02.2018 14:57
Letzter Beitrag: Appa
  Übergabe Anzeigeelement zwischen VIs (Referenz/globale Variable?) lipster 1 4.334 03.02.2017 14:27
Letzter Beitrag: GerdW
  Spaltenbreite Tabellen-Anzeigeelement Tobi Wan Kenobi 2 5.533 16.11.2016 07:25
Letzter Beitrag: Tobi Wan Kenobi

Gehe zu: