Lade...
 

CX_PERCENT - Arithmetik

Arithmetik

Die folgenden Übersichten zeigen die mathematischen Operatoren und die Operanden mit denen eine Prozentzahl  verknüpft werden kann ( alle Ergebnisse entsprechen den Prioritätsregeln ):

CX_PERCENT wird grundsätzlich wie ein Vielfaches von 0.01 behandelt(3). Bei der Addition/Subtraktion mit einem anderen Typen folgt es der Logik eines kaufmännischen Taschenrechners von Aufschlag und Abschlag(3.1).

Addition

Die Addition mit einem Prozent-Wert ist im betriebswirtschaftlichen Sinne zu verstehen: x% auf den Preis aufgeschlagen bedeutet, dass der Preis um x% seines Wertes erhöht wird. Zu beachten ist, dass hierdurch die Addition nicht mehr assoziativ und auch nicht kommutativ ist(2.1)*:

3 = 1 + (100% + 100%) != (1 + 100%) + 100% = 2 + 100% = 4

In InstantView-Schreibweise:

1 100% 100% + + 1 100% + 100% +

*= Die Kommutativität von CX_PERCENT wurde aufgrund der kaufmännischen Interpretation der Addition ausgesetzt, die bei Kommutativität zur Verwirrung führt. Zum einen entspricht die Schreibweise "5 + 20%" der Beschreibung, einen Aufschlag auf einen Grundwert aufzuaddieren. Die Schreibweise "20% + 5" legt aber nahe, dass hier 5 Prozentpunkte auf die 20% aufaddiert werden und das Ergebnis 25% wäre und kein 20%-iger Aufschlag auf 5. 
Besonders verwirrend wird es bei der Subtraktion: Schreibt man "5 - 20%", dann ist klar, dass es sich um einen 20%-igen Abschlag von 5 handelt. "20% - 5" legt aber wiederum die Änderung der Prozentpunkte nahe und wäre durch die Kommutativität eindeutig definiert als:
20% - 5 = 20% + (-5) = (-5) + 20% = (-5) * 1.2 = (-6)
was ziemlich sicher nicht die Intention des Schreibers ist.
Um solche irreführenden Interpretationen zu vermeiden, wird ist CX_PERCENT (+|-|+=|-=) X (X≠CX_PERCENT) als Fehler definiert.(2.1)

 

CX_PERCENT +  INTEGER = Fehler
15% + 10 = nicht erlaubt(2.1)
INTEGER + CX_PERCENT  = CX_NUMERIC
10 + 15% = 11,5(3.1)

 

CX_PERCENT + CX_NUMERIC = Fehler
15% + 10 = nicht erlaubt(2.1)
CX_NUMERIC + CX_PERCENT = CX_NUMERIC
10 + 15% = 11,5(3.1)

 

CX_PERCENT + CX_PERCENT  = CX_PERCENT
15%

+

10%

=

25%(3)

 

CX_PERCENT + CX_FRACTION  = Fehler
50% + 1/2 = nicht erlaubt(2.1)
CX_FRACTION +  CX_PERCENT = CX_FRACTION
1/2 + 50% = 3/4(3.1)

 

CX_PERCENT +  CX_VALUE = Fehler
50% + 10 Stück = nicht erlaubt(2.1)
CX_VALUE +  CX_PERCENT = CX_VALUE
10 Stück + 50% = 15 Stück(3.1)

 

CX_PERCENT +  CX_VALUE_PER = Fehler
50% + 1 €/2 Stück   = nicht erlaubt(2.1)
CX_VALUE_PER +  CX_PERCENT = CX_VALUE_PER
1 €/2 Stück + 50% = 1,5 €/2 Stück(3.1)

   

CX_PERCENT +  CX_FORMULA = Fehler
15% + Formel              = nicht erlaubt(2.1)
CX_FORMULA +  CX_PERCENT = CX_NUMERIC, CX_VALUE oder CX_PERCENT
Formel              + 15% = Zahl

Anmerkung: Bevor die Addition ausgeführt wird, wird die Formel ausgewertet. Das eigentliche Addieren wird nur dann ausgeführt, wenn das Ergebnis ein Objekt ist, welches zu einer Prozentzahl addiert werden darf. Ist dies der Fall, so entsteht Zahl als Ergebnis.

 

CX_PERCENT +  CX_CONDITIONED_BAG = Fehler
15%  + bedingte Objekttabelle   = nicht erlaubt(2.1)
CX_CONDITIONED_BAG +  CX_PERCENT = CX_NUMERIC, CX_VALUE oder CX_PERCENT
bedingte Objekttabelle   + 15%  = Zahl

Anmerkung: Bevor die Addition ausgeführt wird, wird das entsprechende Objekt aus der bedingten Objekttabelle ermittelt. Das eigentliche Addieren wird nur dann ausgeführt, wenn dieses Objekt zu einer Prozentzahl addiert werden darf. Ist dies der Fall, so entsteht Zahl als Ergebnis.

 

Subtraktion

Prozentwerte können im kaufmännischen Sinne von Zahlen abgezogen werden(3.1). Von einem Prozentwert können aber nur Prozentwerte abgezogen werden. Diese werden dann als Zahlen verrechnet.(3)

Zieht man andere Werte von Prozentwerten ab, führt dies zu einem Fehler.(2.1)

INTEGER - CX_PERCENT = CX_NUMERIC
2 - 50% = 1(3.1)

 

CX_PERCENT - CX_PERCENT = CX_PERCENT
50%

-

20%

=

30%(3)

 

CX_NUMERIC - CX_PERCENT = CX_NUMERIC
10 - 50% = 5(3.1)

 

CX_FRACTION - CX_PERCENT = CX_FRACTION
1/2 - 50% = 1/4(3.1)

 

CX_VALUE -  CX_PERCENT = CX_VALUE
15 Stück - 50% = 7,5 Stück(3.1)

 

CX_VALUE_PER -  CX_PERCENT = CX_VALUE_PER
1 €/2 Stück - 50% = 0,5 €/2 Stück(3.1)

  

CX_FORMULA -  CX_PERCENT = CX_NUMERIC, CX_VALUE oder CX_PERCENT
Formel              - 50% = Zahl

Anmerkung: Bevor die Subtraktion ausgeführt wird, wird die Formel ausgewertet. Das eigentliche Subtrahieren wird nur dann ausgeführt, wenn das Ergebnis ein Objekt ist, welches zu einer Prozentzahl subtrahiert werden darf. Ist dies der Fall, so entsteht Zahl als Ergebnis.

 

CX_CONDITIONED_BAG -  CX_PERCENT = CX_NUMERIC, CX_VALUE oder CX_PERCENT
bedingte Objekttabelle - 50% = Zahl

Anmerkung: Bevor die Subtraktion ausgeführt wird, wird das entsprechende Objekt aus der bedingten Objekttabelle ermittelt. Das eigentliche Subtrahieren wird nur dann ausgeführt, wenn dieses Objekt zu einer Prozentzahl subtrahiert werden darf. Ist dies der Fall, so entsteht Zahl als Ergebnis. 

 

Multiplikation

Bei der Multiplikation verhält sich CX_PERCENT mathematisch korrekt wie Hundertstel(3). Dies entspricht der Reduktion eines Wertes auf x%. Auch hier ist die Operation nicht kommutativ, weil "20% * 3.0" ein Ergebnis von 60% nahelegt anstatt 0.6, was mathematisch natürlich das gleiche ist, jedoch aufgrund der geänderten Semantik von X + CX_PERCENT in ClassiX nicht gleich behandelt werden kann. Um den Leser von Berechnungen nicht zu verwirren, ist die Operation CX_PERCENT * X (X != CX_PERCENT) verboten.

CX_PERCENT * INTEGER = Fehler
50% * 2 = nicht erlaubt(2.1)
INTEGER * CX_PERCENT = CX_NUMERIC
2 * 50% = 1(3)

 

CX_PERCENT * CX_PERCENT = CX_PERCENT
50%

*

10%

=

5%(3)

 

CX_PERCENT * CX_NUMERIC = Fehler
50% * 2 = nicht erlaubt(2.1)
CX_NUMERIC * CX_PERCENT = CX_NUMERIC
2 * 50% = 1(3)

 

CX_PERCENT * CX_FRACTION = Fehler
50% * 1/2 = nicht erlaubt(2.1)
CX_FRACTION * CX_PERCENT = CX_FRACTION
1/2 * 50% = 1/4(3)

 

CX_PERCENT *  CX_VALUE = Fehler
50% * 2 Stück = nicht erlaubt(2.1)
CX_VALUE *  CX_PERCENT = CX_VALUE
2 Stück * 50% = 1 Stück(3)

 

CX_PERCENT *  CX_VALUE_PER = Fehler
50% * 1 €/2 Stück   = nicht erlaubt(2.1)
CX_VALUE_PER *  CX_PERCENT = CX_VALUE_PER
1 €/2 Stück * 50% = 0,5€ €/2 Stück(3)

   

CX_PERCENT *  CX_FORMULA = CX_NUMERIC, CX_VALUE oder CX_PERCENT
50% * Formel              = Zahl
CX_FORMULA *  CX_PERCENT = CX_NUMERIC, CX_VALUE oder CX_PERCENT
Formel              * 50% = Zahl

Anmerkung: Bevor die Multiplikation ausgeführt wird, wird die Formel ausgewertet. Das eigentliche Multiplizieren wird nur dann ausgeführt, wenn das Ergebnis ein Objekt ist, welches zu einer Prozentzahl multipliziert werden darf. Ist dies der Fall, so entsteht Zahl als Ergebnis.

 

CX_PERCENT *  CX_CONDITIONED_BAG = CX_NUMERIC, CX_VALUE oder CX_PERCENT
50% * bedingte Objekttabelle   = Zahl
CX_CONDITIONED_BAG *  CX_PERCENT = CX_NUMERIC, CX_VALUE oder CX_PERCENT
bedingte Objekttabelle * 50% = Zahl

Anmerkung: Bevor die Multiplikation ausgeführt wird, wird das entsprechende Objekt aus der bedingten Objekttabelle ermittelt. Das eigentliche Multiplizieren wird nur dann ausgeführt, wenn dieses Objekt zu einer Prozentzahl multipliziert werden darf. Ist dies der Fall, so entsteht Zahl als Ergebnis.

 

Division

Auch bei der Division wird der Prozentwert als Hundertstel angesehen(3).

INTEGER / CX_PERCENT = CX_INTEGER
2 / 50% = 4(3)

 

CX_PERCENT / CX_PERCENT = CX_PERCENT
50%

/

50%

=

100%(3)

 

CX_NUMERIC / CX_PERCENT = CX_NUMERIC
2 / 50% = 4(3)

 

CX_FRACTION / CX_PERCENT = CX_FRACTION
1/2 / 50% = 1(3)

 

CX_VALUE /  CX_PERCENT = CX_VALUE
2 Stück / 50% = 4 Stück(3)

 

CX_VALUE_PER /  CX_PERCENT = CX_VALUE_PER
1 €/2 Stück / 50% = 2 €/2 Stück(3)

  

CX_FORMULA /  CX_PERCENT = CX_NUMERIC oder CX_VALUE
Formel              / 50% = Zahl

Anmerkung: Bevor die Division ausgeführt wird, wird die Formel ausgewertet. Das eigentliche Dividieren wird nur dann ausgeführt, wenn das Ergebnis ein Objekt ist, welches eine Prozentzahl teilen darf. Ist dies der Fall, so entsteht Zahl als Ergebnis.

 

CX_CONDITIONED_BAG /  CX_PERCENT = CX_NUMERIC oder CX_VALUE
bedingte Objekttabelle / 50% = Zahl

Anmerkung: Bevor die Division ausgeführt wird, wird das entsprechende Objekt aus der bedingten Objekttabelle ermittelt. Das eigentliche Dividieren wird nur dann ausgeführt, wenn dieses Objekt eine Prozentzahl dividieren darf. Ist dies der Fall, so entsteht Zahl als Ergebnis.