Skip to content

Very aggressively converts a value to a number, if possible

License

Notifications You must be signed in to change notification settings

UrbanCompass/force-number

Repository files navigation

force-number

Very aggressively converts value to number, if possible.

This is especially useful for reading a numerical value that has been formatted into decorated Strings. As mentioned above, this function is very aggressive -- meaning it will strip all characters other than digits, minus sign, and the decimal symbol and then try to return a number value. Here are some examples:

'USD$ 123.47' ->  123.47
'(100,000¥)'  -> -100000
'-$30.65235M' -> -30652350
'12/31/2007'  ->  12312007
'7e4'         ->  70000
'32.43.54'    ->  32.43 (multiple decimal points are ignored)

Also supports the thousand/million/billion multiplier in two formats:

'5k'         -> 5000
'5K'         -> 5000
'5 thousand' -> 5000
'5 tenths'   -> 5
'5M'         -> 5000000
'5m'         -> 5000000
'5 million'  -> 5000000
'5B'         -> 5000000000
'5b'         -> 5000000000
'5 billion'  -> 5000000000
'5 meters'   -> 5

Use with caution.

For Booleans: true -> 1, false -> 0

Other input types will return the failVal: null, undefined, Object, Array.

Installation

Via npm:

npm install --save force-number

Usage

import forceNumber from 'force-number';

forceNumber('USD$ 123.47'); // 123.47
forceNumber('whatever'); // NaN

Also included is a convenience function that will automatically convert a NaN result to null:

import forceNumber from 'force-number';

forceNumber.orNull('whatever'); // null

Note that this is written entirely in ES2015+. If you need to use this in a runtime that does not support ES2015 features, you will need to provide your own transpilation process in order to use this library.

About

Very aggressively converts a value to a number, if possible

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published