mathjs
Version:
Math.js is an extensive math library for JavaScript and Node.js. It features a flexible expression parser and offers an integrated solution to work with numbers, big numbers, complex numbers, units, and matrices.
58 lines (47 loc) • 1.52 kB
JavaScript
module.exports = function (math) {
var util = require('../../util/index'),
BigNumber = math.type.BigNumber,
collection = require('../../type/collection'),
isCollection = collection.isCollection,
isNumber = util.number.isNumber,
isBoolean = util['boolean'].isBoolean,
isString = util.string.isString;
/**
* Create a number or convert a string to a number.
* When value is a matrix, all elements will be converted to number.
* @param {String | Number | Boolean | Array | Matrix} [value]
* @return {Number | Array | Matrix} num
*/
math.number = function number (value) {
switch (arguments.length) {
case 0:
return 0;
case 1:
if (isCollection(value)) {
return collection.deepMap(value, number);
}
if (value instanceof BigNumber) {
return value.toNumber();
}
if (isString(value)) {
var num = Number(value);
if (isNaN(num)) {
num = Number(value.valueOf());
}
if (isNaN(num)) {
throw new SyntaxError(value.toString() + ' is no valid number');
}
return num;
}
if (isBoolean(value)) {
return value + 0;
}
if (isNumber(value)) {
return value;
}
throw new math.error.UnsupportedTypeError('number', math['typeof'](value));
default:
throw new math.error.ArgumentsError('number', arguments.length, 0, 1);
}
};
};