# quantize-number

> Quantize a number

Latest version **0.0.2** (published 2016-01-16) · MIT license · 0 weekly downloads

## Install

```sh
npm install quantize-number
pnpm add quantize-number
yarn add quantize-number
bun add quantize-number
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.0.2 |
| Published | 2016-01-16 |
| First published | 2016-01-16 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 3 |
| Author | Jmeas |
| Maintainers | jmeas |

## Links

- npm: https://www.npmjs.com/package/quantize-number
- Repository: https://github.com/jmeas/quantize-number
- Issues: https://github.com/jmeas/quantize-number/issues
- npm.io page: https://npm.io/package/quantize-number

## Recent versions

- 0.0.2 (latest) — 2016-01-16

## README

# quantize-number

Quantize a number

[![Travis build status](http://img.shields.io/travis/jmeas/quantize-number.svg?style=flat)](https://travis-ci.org/jmeas/quantize-number)
[![Code Climate](https://codeclimate.com/github/jmeas/quantize-number/badges/gpa.svg)](https://codeclimate.com/github/jmeas/quantize-number)
[![Test Coverage](https://codeclimate.com/github/jmeas/quantize-number/badges/coverage.svg)](https://codeclimate.com/github/jmeas/quantize-number)
[![Dependency Status](https://david-dm.org/jmeas/quantize-number.svg)](https://david-dm.org/jmeas/quantize-number)
[![devDependency Status](https://david-dm.org/jmeas/quantize-number/dev-status.svg)](https://david-dm.org/jmeas/quantize-number#info=devDependencies)

### About

Quantization is an operation that takes some number and constrains it to a discrete
set of numbers.

For instance, quantizing the value of 3 to the even numbers could yield either
2 or 4. If the value of 4 is desired, then this library calls that a "covering" algorithm.
If the value of 2 is desired, then that is called a "fitting" algorithm.

This library provides a utility to quantize numbers using both types of algorithms.

### Uses

Two use cases for quantization are varied, and include:

1. Drag-to-resize user interfaces
2. Infinite scroll algorithms

#### Caveats

This library is generally unsuitable for quantum physics applications, as it
requires that the discrete set of numbers have even spacing between them.

### Installation

The easiest way to install this library is through npm.

```sh
npm install quantize-number
```

Then, import or require it into your library.

```js
// ES2015 syntax
import quantizeNumber from 'quantize-number';

// CJS syntax
var quantizeNumber = require('quantize-number');
```

This library exports UMD, so it works in the most popular JavaScript module
environments, including ES2015, CommonJS, AMD, and also browser globals.

### Usage

##### `quantizeNumber( val, quantum [, options] )`

- `val`: The number to be quantized
- `quantum`: The gap between the discrete set numbers
- `options`: There's currently only one option, `cover`, which accepts a Boolean
  value. This determines whether the algorithm is covering or fitting (see below).

### Examples

```js
quantizeNumber(9, 3) === 9;

quantizeNumber(10, 4) === 8;
quantizeNumber(10, 4, {
  cover: true
}) === 12;

quantizeNumber(-77, 25) === -75;
```

### Covering vs. Fitting

The idea of covering vs. fitting is important to this library. Consider quantizing
the value of 78 to a quantum of 25. There are two choices: 75 or 100. If you want
the larger of the two choices, 100, then you want `cover: true`. Otherwise,
you want `cover: false`.

The same works for the negative numbers, too. If we have -78 and we're quantizing it
against 25 (or -25), then `cover: true` would return -100, whereas `cover: false` would
return -50.

---
_Source: https://npm.io/package/quantize-number · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
