Skip to main content
Deno 2 is finally here 🎉️
Learn more

modulo

modulo implements the mathematical modulo operation in TypeScript for Deno.

License Deno doc Deno module Github tag Build Code coverage

Motivation

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

mod.ts

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 { modulo, 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);