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!
ihr habt mir schon sehr oft passiv geholfen. Heute brauche ich sogar aktive Hilfe:
Ich lasse mir Daten als 1-D Array String auf dem Frontpanel anzeigen. Die haben aber relativ viele Nachkommastellen und ich würde gerne auf zwei Stellen nach dem Komma runden oder zur Not einfach abschneiden. Die Werte befinden sich aber im 10er und 100er und 1000er Bereich, sodass ich nicht einfach nach xx,xx Stellen abschneiden kann.
Gibt es da eine Möglichkeit oder muss ich den String erst in einen Double umwandeln zum runden?
Es muss auch nicht unbedingt in der Anzeige ein String sein. Das ist mir total egal, ob das String oder Double ist, Hauptsache es hat nur zwei Nachkommastellen.
Die Arrays sind auch bis auf den ersten Eintrag immer leer. Wenn es also eine Lösung für den Array gäbe, wäre das natürlich Premium. Aber wenn es "nur" eine schicke Lösung ohne Umwandlung für ein einziges Element gibt, ist das extrahieren dieses einen Wertes aus dem sonst leeren Array ja die einfachste Übung.
(10.01.2014 16:56 )anne schrieb: Es muss auch nicht unbedingt in der Anzeige ein String sein. Das ist mir total egal, ob das String oder Double ist, Hauptsache es hat nur zwei Nachkommastellen.
Hallo Anne,
wenn du denn auch ein DBL-Array verwenden kannst, dann kannst du mit der rechten Maus auf ein Element des Arrays gehen und im Kontextmenü "Format und Genauigkeit" auswählen und dort genau 2 Kommastellen anzeigen.
So mache ich es schon bei den Daten, die ich durch Berechnung als Double auslesen kann. Wenn ich allerdings nur einen Wert aus dem Datenstrang rausziehe, ist dieser immer ein Stringarray.
Ich frage mich jetzt nur ob es vom Rechenaufwand her günstiger ist, diesen
a) in einen Double umzuwandeln und dann eben nur über die Eigenschaften die Nachkommastellen anzupassen oder
b) irgendwie im String nach dem "," zu suchen und dann "alle Zeichen bis dahin plus 2" anzeigen zu lassen (das kriege ich allerdings auch nicht hin)
Was meint ihr ist schneller?
Danke!
Anzeige
10.01.2014, 21:25 (Dieser Beitrag wurde zuletzt bearbeitet: 10.01.2014 21:26 von jg.)
(10.01.2014 20:14 )anne schrieb: Was meint ihr ist schneller?
Hängt stark von der Größe deiner Arrays ab. Ich gehe davon aus, dass Wandlung in Zahlen insgesamt schneller geht, denn:
a) bei der String-Lösung (s. macmarvin) musst du dich per For-Schleife durch jedes Element hangeln und dort die Strings manipulieren
b) bei der Zahl-Lösung (s. Lucki) kannst du per LabVIEW-Primitives das gesamte Array auf einmal behandeln. Aus Erfahrung sind diese Funktionen deutlich schneller als Operationen in Schleifen.
Unterschiede merken wirst du aber sicher erst ab ein paar 10000 Elementen, und die will sowieso niemand als Array im Frontpanel sehen.
Gruß, Jens
EDIT: Deinen b-Ansatz hat dir macmarvin programmiert (Komma suchen...), was kriegst du daran nicht hin?
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Ach, da hatte ich auch Tomaten auf den Augen. Die Lösung für b) steht ja tatsächlich schon da...
Im Array ist ja immer nur der erste Eintrag belegt, von daher sollte die Schleife nicht zu lange dauern.
Aber dann ist es wohl trotzdem am schnellsten und einfachsten die Strings für die 30-40 Anzeigeelemente in Doubles umzuwandeln.
Gerade, was Geschwindigkeiten angeht, kann man recht einfach das programmierte in eine Schleife legen und ein paar -zig hundert oder tausend oder hunderttausend mal durchlaufen lassen.
So bekommt man sehr schnell ein Gefühl, was schneller ist, auch ohne eine konkrete Zeitmessung - vor allem ist es einprägsamer, als wenn einem einer sagt: nimm diese oder jene Lösung.
Das Umwandeln ohne For-Schleife hat allerdings den Nachteil, dass das Handling des Dezimaltrenners schlecht komplett unabhängig von System- und LV-Einstellungen geht. Zumindest kenne ich keine schöne Lösung. Die Stringfunktionen bei denen man ordentlich per Formatstring die Umwandlung steuern kann, mögen keine Arrays.