Vermeiden von Rundungsfehlern in Formelergebnissen (Microsoft Excel)
Nick bemerkt, dass die Formel „= 0.28100-INT (0.28100) = 0“ False zurückgibt, obwohl dies offensichtlich wahr ist. Er glaubt, dass das Problem mit dem Runden und der Verwendung von Binärarithmetik usw. durch den Computer zu tun hat. Nick verwendet die Formel als Teil einer größeren IF-Anweisung und geht davon aus, dass es in Excel andere Rundungsfehler gibt, die ihn erreichen und beißen können . Er fragt sich, ob es einen einfachen Weg gibt, solche Formel-Fallstricke zu vermeiden.
Bevor Sie nach einfachen Möglichkeiten suchen, um diese Art von Problem zu vermeiden, ist es wichtig zu verstehen, warum das Problem besteht. Wie Nick bemerkt, hat es wirklich mit binärer Arithmetik und der Tatsache zu tun, dass Excel Informationen rundet. Hinter den Kulissen rundet Excel Informationen immer auf 15 Stellen. Betrachten Sie die Berechnung, mit der Nick arbeitet:
=0.28100-INT(0.28100)=0
Wenn Excel dies zum ersten Mal berechnet, berechnet es die Priorität, der Excel folgt, folgendermaßen:
=(0.28100-INT(0.28100))=0
Beachten Sie die zusätzlichen Klammern. Das Ergebnis von allem links von diesem letzten Gleichheitszeichen ist 3.55E-15, was bedeutet, dass Sie am Ende diese (Langhand-) Formel erhalten:
=0.00000000000000355=0
Dies ist offensichtlich nicht wahr, weshalb Sie den Wert False zurückgeben. Es gibt verschiedene Möglichkeiten, diese Situation zu „beheben“. In diesem Fall ist es vielleicht am einfachsten, einfach Ihre Formel zu ändern, um den Vergleich mit Null zu vermeiden:
=0.28100=INT(0.28100)
Diese Formel gibt wie erwartet True zurück. Dies funktioniert jedoch möglicherweise nicht für alle Ihre Anforderungen. Eine bessere Faustregel zur Vermeidung von Problemen ist es, sich niemals auf die Rundung von Excel zu verlassen. Sie tun dies, indem Sie Ihre eigene explizite Rundung implementieren, wie in den folgenden Formeln gezeigt:
=INT(0.28100)-INT(0.28100)=0 =ROUND(0.28100,0)-INT(0.28100)=0 =ROUND(0.28100,5)-ROUND(0.28100,5)=0
Beachten Sie, dass Sie in diesen Fällen nicht zulassen, dass Excel Berechnungen mit voller Genauigkeit ausführt, da dies beim Vergleich mit einem bestimmten Wert, z. B. Null, zu unerwarteten Ergebnissen führen kann.
Stattdessen zwingen Sie Excel, die Werte – alle Werte, mit denen Sie arbeiten – auf die Genauigkeit zu runden, die Sie für Ihren Vergleich benötigen.
Ein anderer Ansatz besteht darin, den Vergleich nicht mit einem exakten Wert wie Null durchzuführen. Berücksichtigen Sie stattdessen einen „Fudge-Faktor“ im Vergleich, der Rundungsprobleme zulässt. Beispielsweise können Sie feststellen, dass es Ihnen nur wichtig ist, wenn der Vergleich auf ein Hundertstel der von Ihnen angenommenen Einheiten genau ist. In diesem Fall könnte die ursprüngliche Formel folgendermaßen geändert werden:
=0.28100-INT(0.28100)<0.01
Dies gibt True zurück, wie man es erwarten würde.
ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.
Dieser Tipp (8143) gilt für Microsoft Excel 97, 2000, 2002 und 2003. Eine Version dieses Tipps für die Multifunktionsleistenschnittstelle von Excel (Excel 2007 und höher) finden Sie hier: