0.1.6 • Published 2 years ago

@toolbuilder/isnumber v0.1.6

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

IsNumber

Well tested 'is number' checks, that can accept number-like strings, and non-finite values as desired.

There are a lot of is number tests out there. Many of them don't work quite right. Others use a different definition of is number than you might want. So after spending way too much time for such a simple thing, here are four checks:

Functionnumber literalsnumber-like stringsInfinity and NaNInfinity and NaN stringsother strings
isNumerictruetruetruetruefalse
isNumbertruefalsetruefalsefalse
isFiniteNumerictruetruefalsefalsefalse
isFiniteNumbertruefalsefalsefalsefalse

Table of Contents

Installation

npm install --save @toolbuilder/isnumber

Getting Started

This is a dual package, so named exports are available for both CommonJS and ES modules.

import { isNumeric, isFiniteNumeric, isNumber, isFiniteNumber } from '@toolbuilder/isnumber'

console.log(isNumeric('1.234')) // true because it looks like a number
console.log(isFiniteNumeric(42.54)) // true
console.log(isNumber('1.234')) // false because it is a string
console.log(isFiniteNumber(-Infinity)) // false

API

API documentation follows.

isNumber

Test if n is a number.

Includes Infinities and NaN, does not include strings that look like numbers

Parameters:

  • n any value to test
isNumber(1.23) // true
isNumber(Infinity) // true
isNumber(NaN) // true
isNumber('1.23') // false

Returns boolean true if is number, false otherwise

isNumeric

Test if n is a number, or string that parses to a number. Includes infinities and NaN.

Non-finite strings are: 'Infinity', '-Infinity', and 'NaN'.

Parameters:

  • n any value to test
isNumeric(1.23) // true
isNumeric('Infinity') // true
isNumeric(NaN) // true
isNumeric('1.23') // true
isNumeric('hi') // false

Returns boolean true if is numeric, false otherwise

isFiniteNumber

Test if n is a finite number.

Does not include infinities, NaN, or strings that look like numbers.

Parameters:

  • n any value to test
isFiniteNumber(1.23) // true
isFiniteNumber(Infinity) // false
isFiniteNumber(NaN) // false
isFiniteNumber('1.23') // false

Returns boolean true if is a finite number, false otherwise

isFiniteNumeric

Test if n is a finite number, or string that parses to a finite number.

Does not include infinities, NaN

Parameters:

  • n any value to test
isFiniteNumeric(1.23) // true
isFiniteNumeric('Infinity') // false
isFiniteNumeric(NaN) // false
isFiniteNumeric('1.23') // true
isFiniteNumeric('hi') // false

Returns boolean true if is a finite number, false otherwise

Credits

The isFiniteNumeric implementation, and the most of the tests were copied from this site. I found these tests on Stack Overflow in an answer by 'CMS'. Thanks!

Contributing

Contributions are welcome. Please create a pull request.

  • I use pnpm instead of npm.
  • Run the unit tests with pnpm test
  • Package verification requires pnpm to be installed globally.
    • npm install -g pnpm
    • pnpm install
    • pnpm build to build cjs, docs, and *.d.ts
    • pnpm run check:packfile to test against ES and CommonJS projects, as well as Electron
    • pnpm run check to validate the package is ready for commit

Issues

This project uses Github issues.

License

MIT

0.1.6

2 years ago

0.1.4

3 years ago

0.1.3

4 years ago

0.1.2

4 years ago

0.1.1

5 years ago

0.1.0

5 years ago