Built in Operators¶
- Table of contents
- Built in Operators
There are three basic sets of operators available:
Arithmetic¶
All of the arithmetic operators are included and available: +, -, *, / and of course % (modulo).
Boolean¶
Boolean operators will consider false every value equal to zero (0 ± 0.000000000001), and true every other value.
But they are warrantied to return 1.0 for true and 0.0 for false. The available operators are: & (and), | (or), ¬ (not).
There are also a set of Extra Functions and Operators
Precedence¶
For those who don't know, precedence of operators refers to which of theoperators will be evaluated first when left alone. I won't bother you with numbers, the order of evaluation is as follows:
FIRST-> * / % - + ¬ & | == != <-LAST
----- --- - - - -----
^^^ The dashes indicate groups with the same precedence
When operators have the same precedence they will be evaluated from left to right.
Note: as in primary school (and beyond) you can always alter the precedence of operators with the use of parentheses.
Factorial¶
Factorial isn't technically an operator... it's a function but since it's so common, it's implemented by using the ! symbol and with more precedence than the arithmetic multiplication. Even though the implementation of operators is trivial in exp4j the factorial is the only postfix unary operator, so it deserves a special case.
Note: Factorials from 0! to 21! are guaranteed to be correct, bigger than 21! may suffer lost of precision because of double rounding.
Note 2: Factorials bigger than 170! will rise an IllegalArgumentException since the value will be Double.INFINITY.
Code¶
The code for the operators is here.
Updated by Federico Vera over 7 years ago · 6 revisions