Maths

The library supports a multitude of mathematical expressions, with quite a lot of flexibility.

Operators

You can use mathematical operators to carry out equations with roll results

d6*5     // roll a 6 sided die and multiple the result by 5
2d10/d20 // roll a 10 sided die 2 times and add the results together, then roll a 20 sided dice and divide the two totals
3d20^4   // roll a 20 sided die 3 times and raise the result to the power of 4 (Exponent)
3d20**4  // Equivalent to above (Exponent)
d15%2    // roll a 15 sided die and return the remainder after division (Modulus)

You can even use them to determine the number of dice to roll, or how many sides a die should have:

(4-2)d10 // subtract 2 from 4 (`2`) and then roll a 10 sided dice that many times
3d(2*6)  // multiple 2 by 6 (`12`) and roll a dice with that many sides 3 times

Parenthesis

Parenthesis are recognised anywhere in notations to group sections and define the order of operations, as you would expect:

1d6+2*3: [4]+2*3 = 10
(1d6+2)*3: ([4]+2)*3 = 18

 

Functions

You can also use an array of mathematical formulas and functions.

It works with the following Javascript math functionsopen in new window:

abs, ceil, cos, exp, floor, log, max, min, pow, round, sign, sin, sqrt, tan

Some examples:

round(4d10/3): round([3, 6, 1, 1]/3) = 3.7
floor(4d10/3): round([3, 6, 1, 1]/3) = 3.6
ceil(4d10/3): round([3, 6, 1, 1]/3) = 3.7
abs(4d10-25): abs([3, 6, 1, 1]-25) = 14
sqrt(4d10/3): sqrt([3, 6, 1, 1]) = 1.91
min(4d6, 2d10): min([3, 4, 1, 5], [10, 6]) = 13

Rounding negative numbers

Rounding negative numbers is handled differently to Javascript's Math.round().

round() always rounds half away from zeroopen in new window, whereas Javascript's Math.round() rounds half up.

Some examples:

Math.round(1.5)   === 2
round(1.5)        === 2

Math.round(1.3)   === 1
round(1.3)        === 1

Math.round(1.6)   === 2
round(1.6)        === 2

Math.round(-1.3)  === -1
round(-1.3)       === -1

Math.round(-1.6)  === -2
round(-1.6)       === -2

Math.round(-1.5)  === -1  // Half is rounded "up" to -1
round(-1.5)       === -2  // Half is rounded "down" to -2

TIP

If we're missing a math function that you want, let us knowopen in new window!