WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Software

Software Rat & Tat bei Softwareproblemen

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 02.08.2004, 15:36   #1
Atlan
Master
 
Registriert seit: 20.12.1999
Beiträge: 636


Standard Excel 2003 Sp1 rechnet falsch

Hi Leute

Ich habe ein Problem mit Excel, oder besser gesagt Excel rechnet falsch.

In meinem Beispiel möchte ich, das pro Zeile eine Zelle um einen Bestimmten Wert erhöt wird.
Also in der ersten Zelle (A1) steht die Schrittweite, in der Zelle A3 steht der Startwert.
In der Zelle A5 wird zum Startwert (A3) die Schrittweite (A1) hinzugezählt.
In der Zelle A6 wird zum A5 Wert die Schrittweite (A1) hinzugezählt.
In der Zelle A7 wird zum A6 Wert die Schrittweite (A1) hinzugezählt.

In der B Spalte habe ich die gleichen Werte eingetragen wie sie in der A Spalte errechnet werden sollten.
In der C Spalte mach ich einen logischen Vergleich zwischen den beiden. WAHR = die Werte in A & B sind identisch. FALSCH dann sind sie nicht ident.

Ab Zeile 64 rechnet Excel jetzt falsch, wenn man die Zahl auf 14 Nachkommerstellen formatiert sieht man warum A & B nicht gleich sind.



die Excel Beispieldatei die oben abgebildet ist

Könnt ihr den Fehler nachvollziehen, oder habt ihr vielleicht eine Erklärung? Hab ich mathematisch was falsch gemacht?
Excel ist in der Version 2003 + SP1 aktualisiert.

Mein eigentliches Problem liegt um VBA bei durchlaufen einer Schleife im Wert des Schleifenzählers. Da dieser Fehler aber auch in einer Tabelle auftritt, habe ich ihn dort beschrieben, weil ich glaube das er so einfacher nachzuvollziehen ist.

thx Atlan
Atlan ist offline   Mit Zitat antworten
Alt 02.08.2004, 16:27   #2
stz
Veteran
 
Registriert seit: 22.10.2000
Beiträge: 353


Standard Excelfehler

Diesen Fehler kenne ích bereits von älteren Excel-Versionen (Excel 6). Er trat in einer Zeitabrechnungstabelle auf. Als Abhilfe habe ich die Rundungsfunktion verwendet.
M.f.G. Stz.
stz ist offline   Mit Zitat antworten
Alt 02.08.2004, 16:32   #3
Preacher
Inventar
 
Registriert seit: 20.10.2003
Ort: Celovec / Klagenfurt
Alter: 48
Beiträge: 2.559

Mein Computer

Preacher eine Nachricht über ICQ schicken
Standard

Excel rechnet nun mal nur mit endlicher Genauiglkeit (32Bit oder 64Bit FLOAT in dem Fall). Da ergeben sich mit der Zeit eben Fehler wie beschrieben.
Das ist nciht Excel-spezifisch sondern spezifisch für alle Programme, die mit dieser Genauigkeit rechnen.
____________________________________
Bei Problemen zwei Griffe ranschweißen und aus dem Fenster .....
Preacher ist offline   Mit Zitat antworten
Alt 02.08.2004, 16:49   #4
maxb
Großmeister
 
Benutzerbild von maxb
 
Registriert seit: 06.08.2001
Ort: Wien
Beiträge: 5.077

Mein Computer

Standard

Das liegt daran, dass sich 0.1 dezimal, binär nur als

0.000110011001100110011001100110011001100110011001 10011001100110011001100110011001100110011001100110 0110011 ...

darstellen lässt. wennst nur mit endlich vielen binärstellen rechnest, dann hast unweigerlich mal einen fehler.

probiers mal mit 0.125
du wirst sehen, es klappt ohne fehler


EDIT - siehe auch posting über meinen
____________________________________

www.maxb.cc
und www.bikeandbeer.info
maxb ist offline   Mit Zitat antworten
Alt 03.08.2004, 16:17   #5
Atlan
Master
 
Registriert seit: 20.12.1999
Beiträge: 636


Standard

thx Burschen, ihr habt 100%ig recht.

Ich habe soeben Excel zu einem Hausfrauenprogramm degradiert da der Fehler auch bei den von Excel intern verwendeten Algorithmen auftritt (zb beim Auto-Reiheausfüllen).

ich hab jetzt eine Rundungsfunktion eingefügt in der ich auf 14 Stellen (Stellen, nicht Nachkommastellen) runde. Da Excel intern auf 15 Stellen rechnet und ich in jedem Schleifendurchlauf runde müsste das eigentlich reichen.

Die Schleife schaut jetzt so aus (und wird auch korrekt beendet)


Do While AktuellerWert <= EndWert
...
AktuellerWert = Round(AktuellerWert, 14 - Len(Round(AktuellerWert))) + SchrittWeite
...
Loop


Zitat:
Original geschrieben von maxb

EDIT - siehe auch posting über meinen
Welchen meinst du ?
Atlan ist offline   Mit Zitat antworten
Alt 03.08.2004, 16:26   #6
maxb
Großmeister
 
Benutzerbild von maxb
 
Registriert seit: 06.08.2001
Ort: Wien
Beiträge: 5.077

Mein Computer

Standard

Zitat:
Original geschrieben von Preacher
Excel rechnet nun mal nur mit endlicher Genauiglkeit (32Bit oder 64Bit FLOAT in dem Fall). Da ergeben sich mit der Zeit eben Fehler wie beschrieben.
Das ist nciht Excel-spezifisch sondern spezifisch für alle Programme, die mit dieser Genauigkeit rechnen.

@Atlan - das hier. ist von der aussage her gleich mit meinem.


wir gesagt, das hat nicht unmitelbar etwas mit excel zu tun.
____________________________________

www.maxb.cc
und www.bikeandbeer.info
maxb ist offline   Mit Zitat antworten
Alt 03.08.2004, 16:40   #7
maxb
Großmeister
 
Benutzerbild von maxb
 
Registriert seit: 06.08.2001
Ort: Wien
Beiträge: 5.077

Mein Computer

Standard

Ein anderes Beispiel für's Excel


A1=1.00000001


(A1^2 - 2*A1 + 1) = 0 -> WAHR
____________________________________

www.maxb.cc
und www.bikeandbeer.info
maxb ist offline   Mit Zitat antworten
Alt 04.08.2004, 12:39   #8
Dane
Master
 
Registriert seit: 12.01.2002
Beiträge: 640


Standard

Hab beim rumprobieren folgendes herausgefunden...
Wenn du auf Extras->Optionen gehst, dort den Reiter "Berechnung" und dann die Option-> "Genauigkeit wie angezeigt" aktivierst, dann funktioniert das Beispiel, wie beschreiben im ersten Post.

lg
Dane ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:06 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag