LabVIEWForum.de
Wieder das liebe Runden - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Wieder das liebe Runden (/Thread-Wieder-das-liebe-Runden)



Wieder das liebe Runden - Donald - 13.09.2008 17:20

Moin,

warum zum Geier rundet LV manchmal auf bzw. ab. Ich benutze DBL als Fromat und 2 Kommastellen. Was ich hier im Forum schon gelesen habe, reicht mir irgentwie nicht. Kann man das nich irgentwie abstellen? Das nervt voll!!

Gruss


Wieder das liebe Runden - Lucki - 14.09.2008 09:06

Irrtum: LabVIEW rundet niemals, es sie dann, du benutzt eine Funktion dafür oder konvertierst eine Gleitkommazahl mit Kommastellen in eine Ganzzahl.

Unter den Anzeigeeigenschafte kann man die Anzahl der sichtbaren Kommastellen einstellen, wobei allerdings die Kommastellen nicht einfach abgeschnitten werden, sondern das was angezeigt wird ist gerundet. Aber intern bleibt in jedem Fall die volle Präzision erhalten.

Etwas anderes ist es, wenn Du eine Zahl in einen String mit z.B nur zwei Kommastellen konvertierst und dann wieder Rück-konvertiest. Dann geht die ursprünglichen Präzision der Zahl unwiderruflich verloren.


Wieder das liebe Runden - Donald - 14.09.2008 11:36

Ja sowas dacht ich mir schon. Verstehn tue ich es aber nicht, denn ich benutze im ganzen Programm ausschliesslich double mit zwei Kommastellen.

Denn 0,18 + 0,18 sind immernoch 0,36 und nicht 0,35.


Wieder das liebe Runden - Lucki - 14.09.2008 13:02

' schrieb:Denn 0,18 + 0,18 sind immernoch 0,36 und nicht 0,35.
Die Anzeige ist nicht gleich der Zahl, gerechnet wird immer mit der Zahl und nicht mit dem was in der Anzeige zu sehen ist. Der auf zwei Stellen gerundeten Anzeige 0,18 kann z.B die interne Zahl 0,176 zugrundeliegen. (Das siehst Du, wenn Du die Anzeigegegenauigkeit erhöhst). Und das verdoppeln gibt dann 0,352, in der zweistelligen Anzeige sieht man dann 0.35.
(Das passiert natürlich nur, wenn die 0.18 das Ergebnis einer Rechenoperation war. Wenn Du die 0.18 eigenhändig in das Bedienelement getippt hast, dann ist die Zahl auch intern 0.18 und verdoppelt ist es dann 0.36)


Wieder das liebe Runden - MikeS81 - 14.09.2008 15:12

Hallo Donald,
schau dir mal die folgenden Links an:

Link 1 -> NI
Link2 -> Wikipedia
Link3 -> NI Forum

Vielleicht hilft das ja weiter. Wink
Mike


Wieder das liebe Runden - Donald - 24.09.2008 14:24

Danke!!

Ich habe mir jetzt geholfen, indem ich den Wert x 100 nehme, auf eine ganze Zahl runde und wieder durch 100 dividiere. Ist zwar nicht schön, aber erfüllt seinen Zweck. ^_^


Wieder das liebe Runden - Lucki - 24.09.2008 15:26

' schrieb:Danke!!

Ich habe mir jetzt geholfen, indem ich den Wert x 100 nehme, auf eine ganze Zahl runde und wieder durch 100 dividiere. Ist zwar nicht schön, aber erfüllt seinen Zweck. ^_^
Das ist kein Behelf, sondern so macht mans beim Runden. Das hätten wir Dir auch so sagen können, wenn Du danach gefragt hättet. Ursprünglich wolltest Du aber lediglich eine Erklärung für merkwürdig erscheinende Anzeigeergebnisse.
Ein andere Methode ist die Umwandlung in einen Zahlenstring mit zwei Kommastellen und anschließende Rück-Konvertierung. Ist aber auch nicht schöner.
Und unschön ist es einfach deshalb, weil es sich nicht lohnt, dafür eine Funktion bereitzuhalten. Es ist in 99.99% aller Anwendungen das Beste, intern solange es geht immer mit der vollen Genauigkeit zu rechnen und nur das Endergebnis in der Anzeige auf eine überschaubare Anzahl von Stellen zu runden. Und das geht ja sehr elegant zu machen.
Es wäre interessant, mal Deine Begründung zu hören, warum Du das anders machen mußt als quasi der Rest der Welt.
Guß Ludwig


Wieder das liebe Runden - Donald - 24.09.2008 16:06

Nee, wenn das der weg ist mit Runden, dann füge ich mich da schon ^_^.

Ich muss mich als Noob für die FH in LV einarbeiten. Habe eine Rechenschaltung gebastelt und wunderte mich warum manchmal richtige Ergebnisse raus kamen und manchmal nicht. Irgentwann habe ich gemerkt, dass LV schlicht "falsch" rechnet. Und das nur bei Werten die bereits aus einer Rechnung stammten. Ich habe mich darüber geärgert, weil ich den Fehler woanders gesucht habe. Obwohl er ja einfach zu lösen ist. ;-)

Aber nun weiss ich es!
Dank dem Super Forum. Smile