Ansicht
Dokumentation

ABENARITH_OPERATORS - ARITH OPERATORS

ABENARITH_OPERATORS - ARITH OPERATORS

ROGBILLS - Synchronize billing plans   CL_GUI_FRONTEND_SERVICES - Frontend Services  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

- Arithmetische Operatoren

Die Tabelle zeigt die möglichen arithmetischen Operatoren arithmetischer Ausdrücke, ihre Priorität und die Reihenfolge der Berechnung. Innerhalb einer Klammerebene werden Berechnungen mit Operatoren höherer Priorität vor Berechnungen mit Operatoren niedrigerer Priorität durchgeführt. Bei benachbarten Operatoren gleicher Priorität wird die Berechnung in der angegebenen Reihenfolge durchgeführt. In der dritten Spalte der nachfolgenden Tabelle bedeutet 3 die höchste und 1 die niedrigste Priorität.

Die Berechnung erfolgt nach der Rechenregel für den aktuellen Rechentyp. Abgesehen von ** haben die Operatoren keinen Einfluss auf den Rechentyp. Wenn der Operator ** in einem arithmetischen Ausdruck nicht vorkommt wird der Rechentyp nur durch die beteiligten Datentypen bestimmt. Bei Verwendung von ** ist der Rechentyp entweder decfloat34 oder f. Er ist decfloat34 wenn einer der beteiligten Operanden eine dezimale Gleitpunktzahl ist und ansonsten f.

Operator Berechnung Priorität Auftrag
+ Addition der Operanden 1 von links nach rechts
- Subtraktion des rechten vom linken Operanden 1 von links nach rechts
* Multiplikation der Operanden 2 von links nach rechts
/ Division des linken durch den rechten Operanden 2 von links nach rechts
DIV ganzzahliger Anteil der Division des linken durch den rechten Operanden mit positivem Rest 2 von links nach rechts
MOD positiver Rest der Division des linken durch den rechten Operanden; ein Rest ungleich Null liegt immer zwischen Null und dem Betrag des rechten Operanden 2 von links nach rechts
** Potenzieren des linken mit dem rechten Operanden 3 von rechts nach links

Division durch null verhindern

Hinweise

  • Eine Division durch den Wert 0 ist undefiniert und führt zu einer behandelbaren Ausnahme. Nur wenn der Dividend selbst 0 ist, wird bei einer Division durch 0 keine Ausnahme ausgelöst, sondern das Ergebnis auf 0 gesetzt.
  • Das Ergebnis einer Division wird in ABAP für die Rechentypen i, int8, p und decfloat34 kaufmännisch gerundet, während überzählige Nachkommastellen in den meisten anderen Programmiersprachen abgeschnitten werden.
  • Das Ergebnis von DIV multipliziert mit operand2 plus das Ergebnis von MOD ergibt immer operand1. Deshalb beeinflusst die Regel, dass das Ergebnis von MOD immer positiv ist, auch das Ergebnis von DIV. Das Ergebnis einer ganzzahligen Division zweier positiver Zahlen ist bei einem Rest ungleich Null unterschiedlich zum Ergebnis einer ganzzahligen Division zweier negativer Zahlen mit gleichen Beträgen. Genauso ist es bei Operanden mit unterschiedlichen Vorzeichen von Bedeutung, welcher positiv und welcher negativ ist.
  • Falls beim Potenzieren der linke Operand 0 ist, muss der rechte Operand größer gleich 0 sein. Falls der linke Operand negativ ist, muss der rechte Operand eine ganze Zahl sein. Ansonsten kommt es in beiden Fällen zu einer behandelbaren Ausnahme.
  • Um zu umgehen, dass der Operator ** zum Rechentyp f führt, kann bei ganzzahligen Exponenten die eingebaute Funktion ipow verwendet werden, bei welcher der Rechentyp durch das Argument bestimmt wird.
  • Die ABAP-Operatoren DIV und MOD verhalten sich bezüglich der Vorzeichen anders als die SQL-Operatoren DIV und MOD.

Beispiel

Das Beispiel zeigt die Funktion der drei Divisionsoperatoren DIV, MOD und /. Die Ergebnisse sind 4,7273, 4,0000 und 0,8000.

Beispiel

Die folgende Tabelle zeigt das Ergebnis von ganzzahligen Divisionen und deren Rest: Siehe auch das Beispiel für die SQL-Operatoren DIV und MOD.

operand1 operand2 DIV MOD
7 3 2 1
-7 3 -3 2
7 -3 -2 1
-7 -3 3 2

Arithmetische Berechnungen

Beispiel

Siehe Gleitpunktzahlen, arithmetische Berechnungen.






TXBHW - Original Tax Base Amount in Local Currency   CL_GUI_FRONTEND_SERVICES - Frontend Services  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 8360 Date: 20240523 Time: 164248     sap01-206 ( 104 ms )