Operatoren in VBA [] (Operatoren in VBA), Lektion, Seite 722888
https://www.purl.org/stefan_ram/pub/operatoren_vba (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
VBA-Kurs

Operatoren in VBA 

Grenzen der Größe und Genauigkeit

Bei Rechnungen mit Zahlen kommt es in VBA  immer wieder zu Abweichungen von den schulmathematisch richtigen Ergebnissen . VBA  rechnet also tatsächlich manchmal mehr oder weniger „falsch“! – jedenfalls verglichen mit den Erwartungen eines Lernenden. Tatsächlich richtet sich VBA  aber oft nach der Norm IEEE 754, nach welcher die Ergebnisse dann korrekt sind.

Direktbereich
? 0.1 + 0.2 - 0.3

 2.77555756156289E-17 

? 100000000000000000000. + 1. - 100000000000000000000.

 0 

? 3E-324

 4.94065645841247E-324 

Die Umstände, unter denen es zu solchen „Rechenfehlern“ kommen kann, müssen jedem ernsthaften Programmierer bekannt sein. Es wäre an dieser Stelle des Kurses aber noch zu früh, dieses Thema der möglichen Abweichungen vom mathematisch korrekten Ergebnis ausführlich zu behandeln. Vorläufig sollte man darauf achten, daß die Zahlen und die (Zwischen-)Ergebnisse nicht zu groß  werden und wissen, daß Ergebnisse vom Typ »Double« in den hinteren Stellen  (ungefähr nach der 14. Stelle) vom korrekten Ergebnis abweichen können.

Potenzieren

Das Zeichen »^« heißt „Zirkumflex“.

Einen Term wie »10²« kann man natürlich durch den Ausdruck »10*10« darstellen. In VBA  kann man den Operator »^« zum Potenzieren verwenden.

Direktbereich
? 10 ^ 2

 100 

Zu beachten ist, daß die Bindungskraft (Priorität) des Potenzierens höher ist als die aller anderen Operatoren, selbst als die des negativen Vorzeichens, so daß der Ausdruck »-1^2« den Wert »-(1^2)«, also den Wert »-1« hat. Dies zeigt auch deutlich, daß »-1« kein Numerale ist, denn dann wäre es immer eine Einheit (eine lexikalische Einheit).

Der Datentyp »Currency«

Der Datentyp »Currency« hat das Typ-Zeichen »@« und vermeidet einige der Probleme mit »double«, da er die ersten vier dezimalen Nachkommastellen genau abspeichert.

Direktbereich
? 0.1# + 0.2# - 0.3#
 2.77555756156289E-17 
? 0.1@ + 0.2@ - 0.3@
 0 

Die Werte dieses Datentyps haben 15 Stellen vor dem Komma und 4 danach.

Der genaue Wertebereich geht von −922.337.203.685.477,5808 bis 922.337.203.685.477,5807.

Berechnungen mit »Currency« sind vermutlich etwas langsamer als Berechnungen mit »Double«.

Dieser Datentyp ist besonders für kaufmännische Berechnungen mit Währungsbeträgen gedacht.

Der Datentyp »Decimal« kann sogar noch etwas mehr Stellen speichern, ist aber schwieriger zu verwenden und wird deswegen an dieser Stelle des Kurses noch nicht weiter behandelt.

Priorität

Priorität und Assoziativität der bisher behandelten Operatoren
()                   Eingeklammerter Ausdruck
^ Potenzieren
+ - Unaere vorangestellte Operatoren
/ * Division, Multiplikation
+ - Addition, Subtraktion
& Verkettung

[?]   Ausgabe vorhersagen

Die folgende Eingabe gibt sieben Zeichen aus. Sagen Sie alle sieben Zeichen einzeln voraus!

Main.java
? 2E3 & ", " & 2 ^ 3

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram722888 stefan_ram:722888 Operatoren in VBA "2 hoch n", "n hoch 2", "10 hoch n", "n hoch 10" Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd722888, slrprddef722888, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/operatoren_vba