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

modulo

modulo implements the mathematical modulo operation in TypeScript for Deno.

deno.land mod deno.land doc tag MIT license CI 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

Documentation

modulo exposes a TypeScript API for Deno. It consists of the mod.ts module, which exports the modulo function, the complementary quotient function, and the decompose function.

mod.ts

The modulo function calculates m = x mod n:

import { modulo } from "./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(q / n).

import { modulo, quotient } from "./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 "./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();

That’s it!