modulo implements the mathematical modulo operation in TypeScript for Deno.
JavaScript has no native support for true modulo. The %
operator works as
modulo for positive numbers, but not negative ones. For example, -1 % 3 = -1
compared to -1 mod 3 = 2
. If you need the latter, you can either use this
module, or memorize this modulo formula for JavaScript:
x mod n = ((x % n) + n) % n
The modulo
function calculates m = x mod n
:
import { modulo } from "https://deno.land/x/modulo/mod.ts";
const x = -1;
const n = 3;
const m = modulo(x, n);
console.assert(m === 2);
The quotient
function calculates q = floor(x / n)
.
import { quotient } from "https://deno.land/x/modulo/mod.ts";
const x = -1;
const n = 3;
const q = quotient(x, n);
console.assert(q === -1);
The decompose
function calculates (q, m)
. q
, m
, and n
together define
the original value x = q * n + m
:
import { decompose } from "https://deno.land/x/modulo/mod.ts";
const x = -1;
const n = 3;
const [q, m] = decompose(x, n);
console.assert(x == q * n + m);