Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1320to1324
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Frage zu Schleife

Frage zu Schleife
04.07.2013 18:10:02
Martin
Liebe Excelfeunde,
ich spiele gerade ein wenig in Excel herum und bin auf ein Phänomen gestoßen, dass ich mir nicht erklären kann. Vielleicht kann mir von euch jemand das Ergebnis folgender Schleife begründen:
Sub Schleifentest()
Dim i As Double
For i = -5 To 5 Step 0.1
Debug.Print i
Next i
End Sub
Die Schleife ergibt bei mir im Direktfenster folgendes Ergebnis:
-5
-4,9
-4,8
-4,7
-4,6
-4,5
-4,4
-4,3
-4,2
-4,1
-4
-3,9
-3,8
-3,7
-3,6
-3,5
-3,4
-3,3
-3,2
-3,1
-3
-2,9
-2,8
-2,7
-2,6
-2,5
-2,4
-2,3
-2,2
-2,1
-2
-1,9
-1,8
-1,7
-1,6
-1,5
-1,4
-1,3
-1,2
-1,1
-1
-0,900000000000001
-0,800000000000001
-0,700000000000001
-0,600000000000001
-0,500000000000001
-0,400000000000001
-0,300000000000001
-0,200000000000001
-0,100000000000001
-1,02695629777827E-15
0,099999999999999
0,199999999999999
0,299999999999999
0,399999999999999
0,499999999999999
0,599999999999999
0,699999999999999
0,799999999999999
0,899999999999999
0,999999999999999
1,1
1,2
1,3
1,4
1,5
1,6
1,7
1,8
1,9
2
2,1
2,2
2,3
2,4
2,5
2,6
2,7
2,8
2,9
3
3,1
3,2
3,3
3,4
3,5
3,6
3,7
3,8
3,9
4
4,1
4,2
4,3
4,4
4,5
4,6
4,7
4,8
4,9
5
Warum gibt es zwischen i = -1 und i = 1 eine Abweichung um 0,00000000000001?
Viele Grüße
Martin

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Rechengenauigkeit: 15 Nachkommastellen
04.07.2013 19:37:24
Matthias
Hallo
Ich glaube es hängt mit der Rechengenauigkeit von Excel zusammen
ME kann Excel nur bis zur 15 Nachkommastelle genau rechnen.
Verwende doch statt dessen Round()
Wenn Du eh nur eine Nachkommastelle brauchst reicht auch:
Debug.Print Round(i, 1)
Gruß Matthias

AW: Rechengenauigkeit: 15 Nachkommastellen
04.07.2013 19:47:36
Martin
Hallo Matthias,
vielen Dank für deine Antwort. Vielleicht habe ich mein Anliegen falsch formuliert. Warum kommt es zu diesem Rechenfehler ausgerechnet zwischen -1 und +1? Warum muss Excel auf 15 Nachkommastellen genau rechnen, wenn der Wert sich nur um ein Zehntel verändert?
Viele Grüße
Martin

Anzeige
Frage noch offen (Kreuz vergessen zu setzen) owT
04.07.2013 19:49:13
Martin
owT

Du willst ja ein wenig Testen, mach mal das
04.07.2013 20:09:26
Matthias
Hallo
Schreib mal
in A1 -5
in A2 -4,9
jetzt markierst Du A1:A2 und ziehst die Markierung bis A101 nach unten.
Dort passiert nämlich ganau das Gleiche.
In der Bearbeitungszeile steht nun in A51 (-2,04281036531029E-14) Warum auch immer kann ich Dir nicht beantworten.
-1,2
-1,1
-1
-0,9
-0,8
-0,7
-0,6
-0,5
-0,4
-0,3
-0,2
-0,1
-2,04281E-14
0,1
0,2
0,3
0,4
0,5
0,6
0,7
0,8
0,9


Ganz anders verhält sich Excel, wenn Du in zuerst in A51 0 eingibst dann in A50 -0,1 und in A52 0,1
Nun markierst Du A51:A50 und ziehst mit der Maus nach oben bis A1.
Dann markierst Du A51:A52 und ziehst die Markierung nach unten bis A101
Nun siehst Du wie verrückt das Ganze manchmal ist ;-)
Gruß Matthias

Anzeige
AW: Du willst ja ein wenig Testen, mach mal das
04.07.2013 20:17:14
Tino
Hallo,
vielleicht liegt es am Datentyp dieser hat eine zu hohe genauigkeit.
Versuch es mal mit dem Datentyp Currency!
Gruß Tino

Ich habe die Daten in die Zellen geschrieben
04.07.2013 20:58:15
Matthias
Hallo Tino
Das war lediglich ein Beispiel
Aber vielleicht wolltst Du auch garnicht an mich posten.
Gruß Matthias

sollte nicht an dich gehe, sorry oT.
04.07.2013 21:00:24
Tino

funzt auf jeden Fall Debug.Print CCur(i) :-) oT
04.07.2013 21:03:24
Matthias

Okay, mit Currency klappt es, aber....
04.07.2013 21:08:45
Martin
ich verstehe den Grund leider noch immer nicht. Was rechnet Excel denn beim Datentyp Double? Ich verstehe nicht, was Excel bei 0,1 so genau rechnet, dass diese minimale Ungenauigkeit auftritt (...und nur zwischen -1 und +1). Kann mir das jemand erklären?
Viele Grüße
Martin

Anzeige
AW: Okay, mit Currency klappt es, aber....
05.07.2013 09:05:27
Klaus
Hi Martin,
das ist kein Excelproblem, sondern ein generelles Computerproblem dass du mit jedem rechnenden Programm darstellen könntest.
Auf zwei Sätze heruntergebrochen: Computer können nicht alle Kommazahlen korrekt darstellen. Es sind immer nur Annäherungen.
Mehr Details:
http://de.wikipedia.org/wiki/Gleitkommazahl
Grüße,
Klaus M.vdT.

Danke
05.07.2013 10:23:50
Martin
Hallo Klaus,
Rolf hat das Problen ebefalls auf die Gleitkommazahl zurückeführt, das ist sicher die Ursache. Vielen Dank auch für deinen Link.
Viele Grüße
Martin

Anzeige
Rechengenauigkeit bei Double/Single
05.07.2013 04:37:32
Rolf.dW
Guten Morgen Martin,
hab' im Internetz folgendes gefunden. Vielleicht hilft's dir weiter:
"Die Anzahl Nachkommastellen ist nicht mal so ausschlaggebend für die Gleitkomma-Problematik.
Beim Umrechnen ins Binäre Zahlensystem kommen die Verluste zustande weil es auch dort Werte gibt, die nicht endlich dargestellt werden können (so wie im 10-er System der Bruch 1/3).
Der Wert 0.1 ist beispielsweise ein solcher - er kann im Dualystem nicht korrekt dargestellt werden und verliert daher etwas an Genauigkeit.
Beim Zurückwandeln ins 10-er System kann dieser Verlust nicht ausgeglichen werden, daher sind dann die Werte zu klein (sie sind immer zu klein, nie zu gross). Das Ergebnis 13.9 ist um 0.1 kliner als 14 und dürfte somit im Dual-System ebenfalls nicht endlich darstellbar sein.
Und da der Single-Datentyp eben eine verminderte Genauigkeit aufweist kommen hier die Verluste der Umwandlung schneller zum Tragen.
Die Ansicht im Lokalfenster/Überwachungsfenster ist für die Beurteilung nicht zu gebrauchen, die stellt nur gerundete Werte dar.
Ich verwende aus diesen Gründen eigentlich meist nur noch Double und Long als Datentypen.
Mit freundlichen Grüssen" (Thomas Ramel - MVP für MS-Excel -)
Gruß, Rolf

Anzeige
Danke
05.07.2013 09:52:53
Martin
Hallo Rolf,
das ist eine einleuchtende Erklärung. Vielen Dank!
Viele Grüße
Martin

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige