Operadores Incluidos » Histórico » Versión 2
Federico Vera, 2018-07-12 17:12
1 | 1 | Federico Vera | # Operadores Incluidos |
---|---|---|---|
2 | |||
3 | {{>toc}} |
||
4 | |||
5 | Existen dos conjuntos de operadores básicos incluidos: |
||
6 | |||
7 | ## Aritméticos |
||
8 | 2 | Federico Vera | Todos los operadores aritméticos están incluidos y disponibles: **`+`**, **`-`**, **`*`**, **`/`** y por supuesto **`%`** (módulo). |
9 | 1 | Federico Vera | |
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 | 2 | Federico Vera | Pero garantizan que devuelven `1.0` para `verdadero` y `0.0` para `falso`. Los operadores disponibles son: **`&`** (y), **`|`** (y/o), **`¬`** (no). |
14 | 1 | Federico Vera | |
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). |