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);

const test = m === 2;
if (!test) throw new Error();

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);

const test = q === -1;
if (!test) throw new Error();

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);

const test = x == q * n + m;
if (!test) throw new Error();