Realiza un cálculo aritmético de dos números (un número del lado izquierdo y un número del lado derecho) y opcionalmente redondea el resultado al número especificado de decimales.
Las operaciones soportadas son:
Lado izquierdo + lado derecho;
Lado izquierdo - lado derecho;
lado izquierdo * lado derecho; y
lado izquierdo / lado derecho.
Si es necesario redondear, debe especificar:
El validador de conjunto de reglas CER emitirá un aviso si detecta cualquier operación de división en el conjunto de reglas que no especifica redondeo.
<?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 -->
<!-- Puesto que la división es por 2,
podemos salir sin redondeo.
De todas maneras el validador de conjunto
de reglas CER emitirá un aviso. -->
<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 cuando se redondea al decimal más cercano-->
<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 a 3 decimales -->
<!-- Si no se especifica redondeo,
se producirá un error de tiempo de ejecución -->
<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>