Proyecto

General

Perfil

Operadores Incluidos » Histórico » Versión 1

Federico Vera, 2018-07-12 17:11

1 1 Federico Vera
# Operadores Incluidos
2
3
{{>toc}}
4
5
Existen dos conjuntos de operadores básicos incluidos:
6
7
## Aritméticos
8
Todos los operadores aritméticos están incluidos y disponibles: `+`, `-`, `*`, `/` y por supuesto `%` (módulo).
9
10
## Lógicos
11
Los operadores lógicos consideran `falso` a todo valor igual a cero ([`0 ± 0.000000000001`](https://redmine.riddler.com.ar/projects/exp4j/repository/revisions/master/entry/src/main/java/net/objecthunter/exp4j/operator/Operator.java#L70)), y `verdadero` a todo otro valor. 
12
13
Pero garantizan que devuelven `1.0` para `verdadero` y `0.0` para `falso`. Los operadores disponibles son: `&` (y), `|` (y/o), `¬` (no).
14
15
Existe ademán in conjunto de [[Funciones y Operadores adicionales]]
16
17
## Precedencia
18
Para aquellos que no lo saben, la precedencia de operadores se refiere al orden en el cual las operaciones serán evaluadas en caso de que no se utilice ningún modificador de orden:
19
```
20
PRIMERO->  * / %  - +  ¬  &  |  == !=   <-ÚLTIMO
21
           -----  ---  -  -  -  -----    
22
           ^^^ Los guiones indican los grupos que tienen la misma precedencia
23
```
24
Cuando los operadores tienen la misma precedencia serán evaluados de izquierda a derecha.
25
26
***Nota:*** así como en la escuela primaria, el orden de las operaciones puede alterarse utilizando paréntesis.
27
28
## Factorial
29
El factorial no es técnicamente un operador... sino una función, pero dado que es muy común, se la implementa utilizando el símbolo `!` y con más precedencia que la multiplicación. Aunque la implementación de nuevos operadores es trivial en `exp4j` el factorial es el único operados unario postfijo, y por lo tanto requiere un [caso especial](https://redmine.riddler.com.ar/projects/exp4j/repository/revisions/master/entry/src/main/java/net/objecthunter/exp4j/operator/Operators.java#L183).
30
31
**Nota:** Los factoriales entre `0!` y `21!` están garantizados como correctos, aquellos mayores de `21!` pueden sufrir pérdida de precisión debido a redondeo de `double`s.
32
**Nota 2:** Los factoriales mayores a `170!` elevarán `IllegalArgumentException` dado que el resultado es `Double.INFINITY`.
33
34
## Código
35
El código de los operadores se encuentra [aquí](https://redmine.riddler.com.ar/projects/exp4j/repository/revisions/master/entry/src/main/java/net/objecthunter/exp4j/operator/Operators.java).
Volver al inicio