This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
manual:Calculations [2018/05/16 23:14] JMichaelTX Update Operators Table. Needs Fixes. |
manual:Calculations [2018/06/30 03:26] peternlewis [Operators] |
||
---|---|---|---|
Line 23: | Line 23: | ||
Operators based on precedence from lowest to highest are: | Operators based on precedence from lowest to highest are: | ||
- | | Array Separator (`,`)\\ FIXME -- this is NOT an //operator// IMO. | Allows a text Variable, which has comma separated values, to work somewhat like an Array.\\ Assume `MyKMVariable` contains "value1,value2,value3".\\ Then `MyKMVariable[2]` returns "value2". | | + | | Array Separator (`,`) | Allows a text Variable, which has comma separated values, to work somewhat like an Array.\\ Assume `MyKMVariable` contains "value1,value2,value3".\\ Then `MyKMVariable[2]` returns "value2". | |
| Ternary Operator (`?`) | a=b ? 3 : 4 | | | Ternary Operator (`?`) | a=b ? 3 : 4 | | ||
| Bitwise OR (`|`), Bitwise AND (`&`) and Bitwise XOR | operators | | | Bitwise OR (`|`), Bitwise AND (`&`) and Bitwise XOR | operators | | ||
Line 29: | Line 29: | ||
| Shift Operators (`≪, ≫`) | shift a number left or right | | | Shift Operators (`≪, ≫`) | shift a number left or right | | ||
| Arithmetic Operators\\ • Add (`+`)\\ • Subtract (`-`)\\ • Multiply (`*`)\\ • Divide (`/`) | A mathematical function that takes two operands and performs a calculation on them. | | | Arithmetic Operators\\ • Add (`+`)\\ • Subtract (`-`)\\ • Multiply (`*`)\\ • Divide (`/`) | A mathematical function that takes two operands and performs a calculation on them. | | ||
- | | [Modulo](https://en.wikipedia.org/wiki/Modulo_operation) (`i MOD n`) | The remainder of the division of i by n.\\ Both values (`i, n`) must be integer in Keyboard Maestro. | | + | | [Modulo](https://en.wikipedia.org/wiki/Modulo_operation) (`i MOD n`) | The remainder of the division of `i by n`.\\ Both values (`i, n`) must be an integer in Keyboard Maestro. | |
| Power Operator (`^`) | exponentiation | | | Power Operator (`^`) | exponentiation | | ||
| Unary Prefix Operators (`√`, `-`, `( )` ) | square root, negation, sub-expressions | | | Unary Prefix Operators (`√`, `-`, `( )` ) | square root, negation, sub-expressions | | ||
- | | functions\\ FIXME -- While technically Functions are operators, it confusing to most users to list here since everywhere else in KM they are separated. | a large variety of functions | | + | | [[:Functions|Functions]] | a large variety of functions | |
- | | Numbers and Variables or Array Accesses (5,$5A,0x50,8#007,Variable,Variable[5])\\ FIXME -- this is clear as mud. | identifiers and values | | + | | Numbers and Variables or Array Accesses (5,$5A,0x50,8#007,Variable,Variable[5]) | identifiers and values | |
| Unary Postfix Operators (`!,%,°`)) | factorial, percent, degrees | | | Unary Postfix Operators (`!,%,°`)) | factorial, percent, degrees | | ||
+ | |||
+ | Numbers are in decimal by default, but may use base 16 if they start with `$` or `0x` (eg $5A or 0x5A), or may start with a specific base followed by a `#` (eg 8#007). | ||
+ | |||
+ | [[Variables|Variables]] can be used if they contain numeric expressions, including an *array* of numbers separated by commas, in which case you can use an array index to select the desired number. | ||
You can use either `=` or `==` (v8+) for testing for equality. | You can use either `=` or `==` (v8+) for testing for equality. | ||
Operators and functions must be in uppercase to minimize conflict with variables. | Operators and functions must be in uppercase to minimize conflict with variables. | ||
- | |||
===== Functions ===== | ===== Functions ===== | ||
Line 48: | Line 51: | ||
===== Variables ===== | ===== Variables ===== | ||
- | Variables are used unadorned in numeric calculations. Do not try to use tokens (like <del>%Variable%MyVar%</del>) in numeric calculation fields, just use MyVar by itself. The variable must contain a valid numeric value, or an expression (v8+) that evaluates to a valid numeric value. So for example, if MyVar contains a text value of `2*3`, then the calculation `4*MyVar` will return 24. | + | In numeric calculation fields, Variable Names are used without the `%` that are used in text token fields. Do not try to use tokens (like `%Variable%MyVar%`) in numeric calculation fields, just use MyVar by itself. The variable must contain a valid numeric value, or an expression (v8+) that evaluates to a valid numeric value. So for example, if MyVar contains a text value of `2*3`, then the calculation `4*MyVar` will return 24. |
===== Screen Coordinates ===== | ===== Screen Coordinates ===== |