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:

String Umwandlung



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!

08.05.2025, 16:42 (Dieser Beitrag wurde zuletzt bearbeitet: 08.05.2025 16:46 von GerdW.)
Beitrag #11

GerdW Offline
______________
LVF-Team

Beiträge: 17.510
Registriert seit: May 2009

LV2019 (LV2021)
1995
DE_EN

10×××
Deutschland
RE: String Umwandlung
Hallo simcum,

noch ein Nachtrag zu deinem:
Zitat:Mein Ziel ist es nur den Numerischen Wert mit den existierenden nachkommastellen in einen String umzuwandeln.
So sieht dein Zahlenwert aus dem VI aus Beitrag #1 aus:
   
Jetzt erkläre mir bitte nochmal die Anforderung, die "existierenden Nachkommastellen" in einen String zu formatieren!

Was sind für dich "existierende" vs. "arbiträr definierte" vs. "gerundete" Nachkommastellen in deinem Zahlenbeispiel?
Wie definierst du diese unterschiedlichen Fälle?
Und wie passen diese Definitionen zu deiner (bisher sehr ungenauen) Anforderung?
Und ganz wichtig: wo genau kommt der Zahlenwert her? Wie "genau" ist die Datenquelle? (Kommt der Wert vielleicht von einem DAQ-Gerät mit 16bit Auflösung? Dann würden dir auch 5 signifikante Ziffern genügen!)

Beim Programmieren (nicht nur LabVIEW, sondern immer) geht es um genau definierte Anforderungen - und nebenbei schadet es nicht, etwas über die dabei verwendeten Datentypen zu wissen…

P.S.: In meiner Signatur stehen schon seit Jahren (Jahrzenhnten?) diverse Links, u.a. auch "FP numerics". Warum wohl? ;-)

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
08.05.2025, 17:47
Beitrag #12

simcum Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 124
Registriert seit: May 2015

2016
2010
DE


Deutschland
RE: String Umwandlung
Hallo GerdW,

nur um es klar zu stellen, in meinem Code mache ich die Berechnungen natürlich mit numerischen Werten.
Nach der Berechnung wandele ich diese in einen Stringformat um und speichere diese mit write to spreadfile Funktion als txt file ab.
Die Umwandlung in ein Stringformat mache ich deshalb, weil ich auch zusätzlich zu den Werten einen Header als Info z.B. Parameter oder Kanalnamen etc. mit abspeichere.
Das alles übergebe ich in einen 2D Stringarray welches dann gespeichert wird. Nur wie schon geschrieben wird bei der Umwandlung meiner numerischen Werte in Stringwerte die Kommastellen gekürzt.
Die letzte Kommastelle hat dann einen Rundungsfehler.

Was ich erreichen wollte war lediglich alle numerischen Werte mit den vorhandenen kommastellen ohne Kürzung und Rundung 1:1 in Stringwerte umzuwandeln, und abzuspeichern.

Wenn ich jetzt mindesten 10 Kommastellen haben möchte, von mir aus kann die 10.Kommastelle einen Rundungsfehler haben, ist es in Ordnung die numerischen Werte mit dem Format %0.10f umzuwandeln?

Das soll meine letzter Eintrag zu diesem Thema sein.


Bedanke mich

Gruß

Simcum
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
08.05.2025, 19:24 (Dieser Beitrag wurde zuletzt bearbeitet: 08.05.2025 19:25 von GerdW.)
Beitrag #13

GerdW Offline
______________
LVF-Team

Beiträge: 17.510
Registriert seit: May 2009

LV2019 (LV2021)
1995
DE_EN

10×××
Deutschland
RE: String Umwandlung
Hallo simcum,

Zitat:Was ich erreichen wollte war lediglich alle numerischen Werte mit den vorhandenen kommastellen ohne Kürzung und Rundung 1:1 in Stringwerte umzuwandeln, und abzuspeichern.
Dann müsstest du bei DBL-Werten mit 16 signifikanten Ziffern abspeichern (und dabei immer noch Rundung in Kauf nehmen)…

Zitat:Wenn ich jetzt mindesten 10 Kommastellen haben möchte, von mir aus kann die 10.Kommastelle einen Rundungsfehler haben, ist es in Ordnung die numerischen Werte mit dem Format %0.10f umzuwandeln?
   
Reicht dir das aus? (Der Zahlenwert wird an der 7. signifikanten Ziffer gerundet…)

Wieder: was sind deine Anforderungen?
Konkret: welchen Zahlenbereich musst du abdecken?
Nochmal: hast du schon über %e oder %g nachgedacht?

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.05.2025, 06:42
Beitrag #14

simcum Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 124
Registriert seit: May 2015

2016
2010
DE


Deutschland
RE: String Umwandlung
(08.05.2025 19:24 )GerdW schrieb:  Hallo simcum,

Zitat:Was ich erreichen wollte war lediglich alle numerischen Werte mit den vorhandenen kommastellen ohne Kürzung und Rundung 1:1 in Stringwerte umzuwandeln, und abzuspeichern.
Dann müsstest du bei DBL-Werten mit 16 signifikanten Ziffern abspeichern (und dabei immer noch Rundung in Kauf nehmen)…

Zitat:Wenn ich jetzt mindesten 10 Kommastellen haben möchte, von mir aus kann die 10.Kommastelle einen Rundungsfehler haben, ist es in Ordnung die numerischen Werte mit dem Format %0.10f umzuwandeln?

Reicht dir das aus? (Der Zahlenwert wird an der 7. signifikanten Ziffer gerundet…)

Wieder: was sind deine Anforderungen?
Meine Anforderungen sind Messwerte in nV Bereich ohne Umrechnung abzuspeichern. mindestens 7. Kommastelle ohne Rundungsfehler.
Dazu wird ein NannoVoltmeter verwendet, der für solche Messungen geeignet ist.
Leider können die Daten aus dem Messgerät nur als Stringwerte ausgelesen werden.
Ich habe einen Screenshot eingefügt der den prinzipiellen Ablauf verdeutlicht inklusive der Formatierung mit 10. Kommastellen.
Wenn das irgendwie besser umzusetzen ist, bin ich für Vorschläge Dankbar.


Konkret: welchen Zahlenbereich musst du abdecken?
Ist oben bereits beantwortet.

Nochmal: hast du schon über %e oder %g nachgedacht?
%e kommt nicht in Frage, das will keiner sehen, wenn die Werte in der Speicherdatei begutachtet werden müssen, das verwirrt einen nur.
%g ist eine automatische Formatierung, aus der Hilfe: "Bei g wird je nach zu formatierender Zahl zwischen Exponential- oder Fließkommaschreibweise gewählt"
genau die selbe Begründung wie bei %e.

Danke nochmals


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.05.2025, 08:26 (Dieser Beitrag wurde zuletzt bearbeitet: 09.05.2025 08:27 von GerdW.)
Beitrag #15

GerdW Offline
______________
LVF-Team

Beiträge: 17.510
Registriert seit: May 2009

LV2019 (LV2021)
1995
DE_EN

10×××
Deutschland
RE: String Umwandlung
Hallo simcum,

Zitat:Meine Anforderungen sind Messwerte in nV Bereich ohne Umrechnung abzuspeichern. mindestens 7. Kommastelle ohne Rundungsfehler.
Dazu wird ein NannoVoltmeter verwendet, der für solche Messungen geeignet ist.
Dein Messgerät liefert laut Screenshot nur 9 signifikante Ziffern…

Zitat:Leider können die Daten aus dem Messgerät nur als Stringwerte ausgelesen werden.
Die könntest du sofort in deine Ausgabedatei speichern…
(Verwendet aber auch die %e-Formatierung, wie es sich für ein ordentliches Messgerät gehört.)

Zitat:Ich habe einen Screenshot eingefügt der den prinzipiellen Ablauf verdeutlicht inklusive der Formatierung mit 10. Kommastellen.
Wenn es für deine Auftraggeber passt, dann ist das gut…
Immer im Hinterkopf haben: du hast bei float-Werten IMMER Rundungsfehler (in der Dezimaldarstellung bei Werten wie dem von dir gezeigten), von daher ist die Anforderung "ohne Rundungsfehler" unsinnig!

Zitat:Konkret: welchen Zahlenbereich musst du abdecken?
Ist oben bereits beantwortet.
Du hast bisher nur einen einzigen konkreten Zahlenwert genannt.
Und der liegt bei ~19, ohne Angabe einer Einheit.
"Nanovolt-Werte" würde ich eher im Bereich 1e-9 bis 1e-7 vermuten…

Zitat:das will keiner sehen, wenn die Werte in der Speicherdatei begutachtet werden müssen, das verwirrt einen nur.
Ich weiß ja nicht, in welchem Bereich (Forschung, R&D, Kalibrierung) du arbeitest.
Aber Werte mit 10 Nachkommastellen abzuspeichern und dann nicht mit dem Engineering-Format zu arbeiten weil es "verwirrt", passt für mich nicht zusammen.

Ihr arbeitet mit einem Messgerät, dass laut der hier diskutierten Zahlenwerte einen ADC mit ~30bit Auflösung verwenden müsste, und wir diskutieren über float-Basics und ihre Begrenzungen? (Kannst du mal ein Specsheet des Messgeräts verlinken? Das Messgerät liefert eine Auflösung im Attovolt-Bereich, wenn der Messwert 18.8046074nV darstellen soll?)

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.05.2025, 10:30
Beitrag #16

simcum Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 124
Registriert seit: May 2015

2016
2010
DE


Deutschland
RE: String Umwandlung
(09.05.2025 08:26 )GerdW schrieb:  Hallo simcum,

Zitat:Meine Anforderungen sind Messwerte in nV Bereich ohne Umrechnung abzuspeichern. mindestens 7. Kommastelle ohne Rundungsfehler.
Dazu wird ein NannoVoltmeter verwendet, der für solche Messungen geeignet ist.
Dein Messgerät liefert laut Screenshot nur 9 signifikante Ziffern…

Zitat:Leider können die Daten aus dem Messgerät nur als Stringwerte ausgelesen werden.
Die könntest du sofort in deine Ausgabedatei speichern…
Ich muss aber als zwischenschritt Mittelwertbildung realisieren.
(Verwendet aber auch die %e-Formatierung, wie es sich für ein ordentliches Messgerät gehört.)

Zitat:Ich habe einen Screenshot eingefügt der den prinzipiellen Ablauf verdeutlicht inklusive der Formatierung mit 10. Kommastellen.
Wenn es für deine Auftraggeber passt, dann ist das gut…
Immer im Hinterkopf haben: du hast bei float-Werten IMMER Rundungsfehler (in der Dezimaldarstellung bei Werten wie dem von dir gezeigten), von daher ist die Anforderung "ohne Rundungsfehler" unsinnig!
Verstehe sicher, solange der Rundungsfehler die letzte Kommastelle betriftt (in unserem Fall ab dem 7.) ist es nicht von Bedeutung.
Ich nehme 10 Kommastellen und unterdrücke die eventuell erzeugten Null Werte

Zitat:Konkret: welchen Zahlenbereich musst du abdecken?
Ist oben bereits beantwortet.
Du hast bisher nur einen einzigen konkreten Zahlenwert genannt.
Und der liegt bei ~19, ohne Angabe einer Einheit.
Das ist nur ein Beispielwerte was ich erstellt habe, welches der Ausgabe vom Messgerät entspricht.
So sieht ein Messwert z. B. aus: +4,622E-08
Einheit ist Volt also 0.0000000462V, hier darf bis zur 9. Kommastelle nicht gerundet werden damit der nV Bereich so bestehen bleibt.

"Nanovolt-Werte" würde ich eher im Bereich 1e-9 bis 1e-7 vermuten…

Genauso ist es auch

Zitat:das will keiner sehen, wenn die Werte in der Speicherdatei begutachtet werden müssen, das verwirrt einen nur.
Ich weiß ja nicht, in welchem Bereich (Forschung, R&D, Kalibrierung) du arbeitest.
Aber Werte mit 10 Nachkommastellen abzuspeichern und dann nicht mit dem Engineering-Format zu arbeiten weil es "verwirrt", passt für mich nicht zusammen.
Ja da hast du zwar recht aber so wollen die es haben.

Ihr arbeitet mit einem Messgerät, dass laut der hier diskutierten Zahlenwerte einen ADC mit ~30bit Auflösung verwenden müsste, und wir diskutieren über float-Basics und ihre Begrenzungen? (Kannst du mal ein Specsheet des Messgeräts verlinken? Das Messgerät liefert eine Auflösung im Attovolt-Bereich, wenn der Messwert 18.8046074nV darstellen soll?)

Im Attovoltbereich ja aber wir arbeiten im Nanovoltbereich

Hoffe das ist jetzt klarer rübergekommen.

Danke nochmals für deine Unterstützung
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
Heute, 11:31 (Dieser Beitrag wurde zuletzt bearbeitet: Heute 12:56 von rolfk.)
Beitrag #17

rolfk Offline
LVF-Guru
*****


Beiträge: 2.316
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: String Umwandlung
Grundsätzlich hat eine Fliesskommazahl eine unendlich lange Anzahl Dezimalen. Ja es kann vorkommen dass Du zum Beispiel genau 0.5 nano-Something hast und dass das theoretisch nur eine Dezimale hat, aber praktisch ist das nie so. Jedes Messgerät hat eine Ungenauigkeit und die 0.5 nano-Something werden nur in Ausnahmefällen genau als 0.5 umgewandelt/gelesen oder was auch immer. Real kommt da wahrscheinlich eher sowas wie 0.4999832456 rein und bei der nächsten Messung vielleicht 0.50004325.

Das hängt von der Ungenauigkeit der Messung ab und anderen Dingen wie etwa Umwelteinflüssen in der Form von elektrischem oder thermischem Rauschen.

Das heisst, dass die Anzahl Dezimalen die für Dich relevant sind halt von der Messung und Deinen spezifischen Anforderungen abhängen. Und diese Anforderungen sind heute vielleicht anders dann morgen und können auch signifikant varieren zwischen verschiedenen Teilen in Deiner Messung. Deshalb kann LabVIEW für Dich nicht automatisch bestimmen wo die richtige Anzahl Dezimalen liegt.

Du denkst dass Du 0.0045 misst aber sehr wahrscheinlich ist der effektive Wert nur irgendwo in der Nähe davon und weitaus die meisten Fliesskommazahlen (effektiv eine unendliche Anzahl davon, denn die Menge aller Fliesskommazahlen ist unendlich und die im Computer exakt darstellbaren Fliesskommazahlen sind sehr endlich) sind in einem Computer auch nicht genau zu representieren. Denn das würde eine unendliche Anzahl Dezimalen erfordern mit entsprechendem unendlichem Speicher.

Fazit: Du alleine bestimmst in Deiner Applikation was die richtige Anzahl Dezimalen ist in jeder Situation, niemand anders kann das für Dich tun. Das Einzige was Du tun kannst ist die Option einzuschalten um eventuel am Ende angefügte Nullen zu unterdrücken. Dann wird 0.499999978 eben ganz simpel und einfach 0.5 wenn Du das Displayelement mit einer Prezision von 7 einstellst, denn die gerundete Zahl wird dann 0.5000000 und Du hast angegeben um Nullen am Ende zu unterdrücken.

Eine sehr wichtige Regel die unser Elektrotechniklehrer uns im Studium beinahe mit einem Hammer einzubleuen versuchte war:

Zitat:Wer misst misst Mist!

Das Einzige was Du tun kannst ist Dir darüber bewusst zu sein welchen Mist Du misst.

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Heute, 12:00
Beitrag #18

GerdW Offline
______________
LVF-Team

Beiträge: 17.510
Registriert seit: May 2009

LV2019 (LV2021)
1995
DE_EN

10×××
Deutschland
RE: String Umwandlung
Hallo simcum,

Zitat:So sieht ein Messwert z. B. aus: +4,622E-08
Das sieht aber ganz anders aus als das bisherige Beispiel "+1.88046074E+01"!
- Einmal 4 signifikante Ziffern, einmal 9 signifikante Ziffern: hast du einen 12bit-ADC oder einen 30bit-ADC?
- Einmal E-08, einmal E+01: da sind 9 Zehnerpotenzen dazwischen!
Du erwartest konkrete Vorschläge, ohne konkrete "reale" Beispiele zu liefern?

Ich geb's auf, hier noch weiter über Anforderungen und Spezifikationen zu spekulieren…

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
  Umwandlung String in Zeitstempel simcum 3 3.155 14.02.2023 17:41
Letzter Beitrag: Achim
  Schönheitsfehler Ring implizite Umwandlung LabViewer12 1 3.909 21.01.2017 17:12
Letzter Beitrag: GerdW
  Umwandlung Hexa in IEEE754 Gesetzt 4 6.051 28.11.2016 19:24
Letzter Beitrag: Gesetzt
  Umwandlung von VI-Versionen michifu 4 5.736 15.04.2014 10:11
Letzter Beitrag: michifu
  Umwandlung Hex in Dezimal Holg 5 11.671 04.12.2013 13:18
Letzter Beitrag: Holg
  Umwandlung von Grad Celsius in Kelvin TiCy 24 20.542 29.01.2013 14:07
Letzter Beitrag: Kiesch

Who read this thread?
10 User(s) read this thread:
MScz, th13, cordm, TpunktN, Martin.Henz, simcum, GerdW, Woodeye, IchSelbst, rolfk

Gehe zu: