Microsoft Excel

Herbers Excel/VBA-Archiv

Problem es werden 10 nachkommastellen angzeigt...

Betrifft: Problem es werden 10 nachkommastellen angzeigt... von: ray
Geschrieben am: 16.08.2004 07:57:01

Guten Morgen,

damit adiere ich die Zahlen in Spalte 25:
yy = yy + Worksheets("" & mL).Cells(x, 25).Value

Problem: wenn ich die Summe ausgebe bekommen ich als wert:
82131,0799999999

und daß, obwohl alle Zahlen in spalte 25 nur zwei Stellen haben. Sind Beträge, die nur mit 2 Komastellen eingegeben wurden.

Warum bekomme ich 10 stellen zurück????

Viele Grüße aus Hamburg bei herannahmenden Regen
Ray

  


Betrifft: AW: Problem es werden 10 nachkommastellen angzeigt... von: Frank
Geschrieben am: 16.08.2004 09:15:18

Hi Ray
das liegt einfach daran, das Excel (wie alle anderen Computerprogramme) im Binärsystem rechnet. Und da lassen sich nun mal leider einige Dezimalwerte nicht exakt darstellen. Da hilf nur Runden Funktionen mit einzubauen.

Frank


  


Betrifft: hmmm, mit "summe" wird aber richtig gezeigt... von: ray
Geschrieben am: 16.08.2004 09:30:41

danke frank und gruß


  


Betrifft: fehlerwert gefunden, aber warum der??? von: ray
Geschrieben am: 16.08.2004 10:09:33

Hi,
habe halle zeilen einzelnd durchlaufen lassen. Der fehler liegt in zeile 4.
lasse ich ohne diese Zeile durchlaufen, dann bekomme ich als ergebnis 2 kommastellen.

Leider kann ich nicht erkennen, warum der Wert 385,99 in der addition mit anderen WErten 10 Kommastellen prodziert.

Wenn ich den Wert mit msgbox ausgebe, dann steht 385,99. Addiesere ich ihn mit anderen kommen 10 Kommastellen. die Zelle in der der Wert steht ist wie alle anderebn als Zahl mit 2 kommastellen formatiert.

Weiß jemd rat?

Gruß aus Hamburg, wo es wohl gleich mal wieder regnet...
Ray


  


Betrifft: AW: fehlerwert gefunden, aber warum der??? von: Frank
Geschrieben am: 16.08.2004 10:31:22

Hi Ray
wie gesagt, der Wert 385,99 kann wahrscheinlich nicht exakt im Binärsystem dargestellt werden und schon kann es dazu kommen. Schau Dir mal folgende ausführlichere Erklärung an:
http://www.cpearson.com/excel/rounding.htm

Im Ergebnis muss man bei Fießkommaberechnungen (und das tust Du hier implizit) immer mit diesen Rundungsdifferenzen rechnen (und im Program dafür Vorsorge treffen). Das gilt insbesondere für Vergleichsoperationen. Nutze also möglichst nicht

IF var1=var2 then ...

sondern besser
IF Abs(var1-var2)<epsilon then
und mache 'epsilon' ausreichend klein



Frank


  


Betrifft: danke Frank werd das Thema lernen. Gruß Ray von: ray
Geschrieben am: 16.08.2004 11:02:27

d


 

Beiträge aus den Excel-Beispielen zum Thema "Problem es werden 10 nachkommastellen angzeigt..."