Skip to content

clampWithStepPrecision

Maps a normalized value (0..1) into the inclusive range [min, max], snaps it to the nearest multiple of step and clamps the result. The output is rounded to four significant digits via Number.toPrecision(4).

This is the helper that powers slider controls where the visual position is normalized but the underlying value should respect a step.

Importing

ts
import { clampWithStepPrecision } from '@basmilius/utils';

Usage

ts
import { clampWithStepPrecision } from '@basmilius/utils';

clampWithStepPrecision(0.5, 0, 100, 5);   // => 50
clampWithStepPrecision(0.33, 0, 10, 0.1); // => 3.3
clampWithStepPrecision(2, 0, 100, 5);     // => 100 (clamped)

Parameters

NameTypeDescription
valuenumberA normalized fraction in 0..1.
minnumberLower bound of the resulting range (inclusive).
maxnumberUpper bound of the resulting range (inclusive).
stepnumberThe step the result must be a multiple of.

Returns

number — the snapped, clamped and precision-bounded value.

Type signature

ts
declare function clampWithStepPrecision(value: number, min: number, max: number, step: number): number;

See also