https://github.com/jamesplease/quantize-number
Quantize a number
https://github.com/jamesplease/quantize-number
Last synced: 3 months ago
JSON representation
Quantize a number
- Host: GitHub
- URL: https://github.com/jamesplease/quantize-number
- Owner: jamesplease
- License: mit
- Created: 2016-01-16T02:07:16.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2016-01-16T03:31:23.000Z (over 9 years ago)
- Last Synced: 2025-02-23T18:06:34.088Z (4 months ago)
- Language: JavaScript
- Size: 16.6 KB
- Stars: 3
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# quantize-number
Quantize a number
[](https://travis-ci.org/jmeas/quantize-number)
[](https://codeclimate.com/github/jmeas/quantize-number)
[](https://codeclimate.com/github/jmeas/quantize-number)
[](https://david-dm.org/jmeas/quantize-number)
[](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.