arithmétique

Effectue un calcul arithmétique sur deux nombres (numéro de gauche et numéro de droite) et arrondit éventuellement le résultat au nombre de décimales spécifiées.

Les opérations prises en charge sont les suivantes :

Si l'arrondissement est nécessaire, vous devez spécifier ce qui suit :

avertissement : Pour les opérations de division, vous devez généralement fournir une méthode d'arrondissement et un nombre de décimales. Si vous ne le faites pas et qu'un résultat exact ne peut pas être calculé au moment de l'exécution, une erreur d'exécution est signalée.

Le valideur de l'éditeur de règles CER émet un avertissement s'il détecte une opération de division dans votre jeu de règles qui n'effectue pas l'arrondissement spécifié.

<?xml version="1.0" encoding="UTF-8"?>
<RuleSet name="Example_arithmetic"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:noNamespaceSchemaLocation=
"http://www.curamsoftware.com/CreoleRulesSchema.xsd">
  <Class name="ArithmeticExampleRuleClass">

    <!-- 3 + 2 = 5 -->
    <Attribute name="addANumberToAnother">
      <type>
        <javaclass name="Number"/>
      </type>
      <derivation>
        <arithmetic operation="+">
          <Number value="3"/>
          <Number value="2"/>
        </arithmetic>
      </derivation>
    </Attribute>

    <!-- 3 - 2 = 1 -->
    <Attribute name="subtractANumberFromAnother">
      <type>
        <javaclass name="Number"/>
      </type>
      <derivation>
        <arithmetic operation="-">
          <Number value="3"/>
          <Number value="2"/>
        </arithmetic>
      </derivation>
    </Attribute>

    <!-- 3 * 2 = 6 -->
    <Attribute name="multiplyANumberByAnother">
      <type>
        <javaclass name="Number"/>
      </type>
      <derivation>
        <arithmetic operation="*">
          <Number value="3"/>
          <Number value="2"/>
        </arithmetic>
      </derivation>
    </Attribute>

    <!-- 3 / 2 = 1.5 -->
    <!-- S'agissant d'une division par 2,
         nous pouvons nous abstenir de l'arrondissement.
         Cependant, un avertissement sera toujours émis par
         le valideur de jeu de règles CER.   -->
    <Attribute name="divideANumbersByAnother">
      <type>
        <javaclass name="Number"/>
      </type>
      <derivation>
        <arithmetic operation="/">
          <Number value="3"/>
          <Number value="2"/>
        </arithmetic>
      </derivation>
    </Attribute>

    <!-- (3 + 2) * 4 = 20 -->
    <Attribute name="chainedArithmetic">
      <type>
        <javaclass name="Number"/>
      </type>
      <derivation>
        <arithmetic operation="*">
          <arithmetic operation="+">
            <Number value="3"/>
            <Number value="2"/>
          </arithmetic>
          <Number value="4"/>
        </arithmetic>
      </derivation>
    </Attribute>

    <!-- 1.23 + 3.45 = 4.68,
         = 4.7 lorsqu'il est arrondi à la décimale la plus proche-->
    <Attribute name="roundedAddition">
      <type>
        <javaclass name="Number"/>
      </type>
      <derivation>
        <arithmetic decimalPlaces="1" operation="+"
          rounding="half_up">
          <Number value="1.23"/>
          <Number value="3.45"/>
        </arithmetic>
      </derivation>
    </Attribute>

    <!-- 2 / 3, = 0.667 à trois décimales -->
    <!-- Si aucun arrondissement n'est spécifié,
         une erreur d'exécution se produira -->
    <Attribute name="roundedDivision">
      <type>
        <javaclass name="Number"/>
      </type>
      <derivation>
        <arithmetic decimalPlaces="3" operation="/"
          rounding="half_up">
          <Number value="2"/>
          <Number value="3"/>
        </arithmetic>
      </derivation>
    </Attribute>

  </Class>

</RuleSet>