2023년 3월 21일 오후 1:30
Introduced in v5.1.20The mathematics filter operators allow numerical calculations to be performed within filters.
Using mathematics operators
The mathematics operators interpret their arguments as numbers according to the following rules:
- Any non-numeric characters after a valid number are ignored (e.g.
28pxis interpreted as the number 28) - If the argument cannot be interpreted as a number, the value 0 is used (e.g.
foois interpreted as the number 0) - The special values
Infinityand-Infinitycan be used to represent positive and negative infinity respectively
The mathematics operators take three different forms:
- Unary operators apply an operation to each number in the input list (e.g. negate, truncate, sign)
=1 =2 =3 =4 +[negate[]]evaluates to-1-2-3-4=1.2 =2.4 =3.6 =4.8 +[trunc[]]evaluates to1234=1.2 =2.4 =3.6 =4.8 +[round[]]evaluates to1245
- Binary operators apply an operation and parameter to each number in the input list (e.g. add, multiply, remainder)
=1 =2 =3 =4 +[add[3]]evaluates to4567=1 =2 =3 =4 +[multiply[8]]evaluates to8162432
- Reducing operators apply an operation to all of the numbers in the input list, returning a single result (e.g. sum, product)
=1 =2 =3 =4 +[sum[]]evaluates to10=1 =2 =3 =4 +[product[]]evaluates to24=1 =2 =3 =4 +[average[]]evaluates to2.5
Operations Combination
Operations can be combined by concatenating them while merging the inner ][ characters.
[[355]divide[113]fixed[5]]evaluates to3.14159[range[100]sum[]divide[100]]evaluates to50.5[tag[HelloThere]get[text]length[]sum[]]evaluates to9896
Complex operations will sometimes need to be split up into separate filters. For example, to compute the average length of the text field of tiddlers tagged "HelloThere":
<$set name="number-of-tiddlers" value={{{ [tag[HelloThere]count[]] }}}>
Average length of <$text text=<<number-of-tiddlers>>/> tiddlers tagged <<tag "HelloThere">>: <$text text={{{ [tag[HelloThere]get[text]length[]sum[]divide<number-of-tiddlers>fixed[3]] }}}/>
</$set>That renders as:
Average length of 7 tiddlers tagged : 1413.714
Mathematics Operators list
| Operator | Purpose |
|---|---|
| abs | calculate the absolute value of a list of numbers |
| acos | calculate the arccosine value (in radians) of a list of numbers |
| add | treating each input title as a number, add to each the numeric value of the parameter |
| asin | calculate the arcsine value (in radians) of a list of numbers |
| atan | calculate the arctangent value (in radians) of a list of numbers |
| atan2 | returns the angle in the plane (in radians) between the positive x-axis and the ray from (0,0) to the point (x,y), for [Y]atan2[X] |
| average | treating each input title as a number, compute their arithmetic mean |
| ceil | rounds a list of numbers up to the next largest integer |
| compare | filter the input by comparing each item against the parameter |
| cos | calculate the cosine value of a list of angles (given in radians) |
| divide | treating each input title as a number, divide it by the numeric value of the parameter |
| exponential | convert each number to exponential notation with N digits |
| fixed | convert each number to fixed point notation with N digits after the decimal point |
| floor | rounds a list of numbers to the largest integer less than or equal to each number |
| log | treating each input title as a number, return its logarithm with base equal to the numeric value of the parameter if specified, otherwise base e |
| max | treating each input title as a number, take the maximum of its value and the numeric value of the parameter |
| maxall | find the largest of a list of numbers |
| median | treating each input title as a number, compute their median value |
| min | treating each input title as a number, take the minimum of its value and the numeric value of the parameter |
| minall | find the smallest of a list of numbers |
| multiply | treating each input title as a number, multiply it by the numeric value of the parameter |
| negate | calculate the negation of a list of numbers |
| power | treating each input title as a number, raise it to the power of the numeric value of the parameter |
| precision | convert each number to a string with N significant digits |
| product | produce the product of the input numbers |
| remainder | treating each input title as a number, return the remainder when divided by the numeric value of the parameter |
| round | rounds a list of numbers to the nearest integer |
| sign | return -1, 0 or 1 for a list of numbers according to whether each number is negative, zero, or positive |
| sin | calculate the sine value of a list of angles (given in radians) |
| standard-deviation | treating each input title as a number, compute their standard-deviation |
| subtract | treating each input title as a number, subtract from each the numeric value of the parameter |
| sum | produce the sum of the input numbers |
| tan | calculate the tangent value of a list of angles (given in radians) |
| trunc | truncates a list of numbers to their integer part, removing any fractional part |
| untrunc | rounds a list of numbers to the next integer with largest absolute value, that is, away from zero |
| variance | treating each input title as a number, compute their variance |