/** * @class Number * * Creates a wrapper object to allow you to work with numerical values. * * The primary uses for the `Number` object are: * * If the argument cannot be converted into a number, it returns `NaN`. * * In a non-constructor context (i.e., without the `new` operator), `Number` can * be used to perform a type conversion. * * # Using the `Number` object to assign values to numeric variables * * The following example uses the `Number` object's properties to assign values to * several numeric variables: * * biggestNum = Number.MAX_VALUE; * smallestNum = Number.MIN_VALUE; * infiniteNum = Number.POSITIVE_INFINITY; * negInfiniteNum = Number.NEGATIVE_INFINITY; * notANum = Number.NaN; * * # Using `Number` to convert a `Date` object * * The following example converts the `Date` object to a numerical value using * `Number` as a function: * * var d = new Date("December 17, 1995 03:24:00"); * print(Number(d)); * * This displays "819199440000". * * The following example converts the Date object to a numerical value using * `Number` as a function: * * <div class="notice"> * Documentation for this class comes from <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Number">MDN</a> * and is available under <a href="http://creativecommons.org/licenses/by-sa/2.0/">Creative Commons: Attribution-Sharealike license</a>. * </div> */ /** * @method constructor * Creates new Number object. * @param value * The numeric value of the object being created. */ //Properties /** * @property {Number} MAX_VALUE * @static * The largest positive representable number. The largest negative representable * number is `-MAX_VALUE`. * * The `MAX_VALUE` property has a value of approximately 1.79E+308. Values larger than `MAX_VALUE` are * represented as `"Infinity"`. * * Because `MAX_VALUE` is a static property of `Number`, you always use it as `Number.MAX_VALUE`, * rather than as a property of a `Number` object you created. * * The following code multiplies two numeric values. If the result is less than or equal to * `MAX_VALUE`, the `func1` function is called; otherwise, the `func2` function is called. * * if (num1 * num2 <= Number.MAX_VALUE) * func1(); * else * func2(); */ /** * @property {Number} MIN_VALUE * @static * The smallest positive representable number -- that is, the positive number * closest to zero (without actually being zero). The smallest negative * representable number is `-MIN_VALUE`. * * The `MIN_VALUE` property is the number closest to 0, not the most negative number, that JavaScript * can represent. * * `MIN_VALUE` has a value of approximately 5e-324. Values smaller than `MIN_VALUE` ("underflow * values") are converted to 0. * * Because `MIN_VALUE` is a static property of `Number`, you always use it as `Number.MIN_VALUE`, * rather than as a property of a `Number` object you created. * * The following code divides two numeric values. If the result is greater than or equal to * `MIN_VALUE`, the `func1` function is called; otherwise, the `func2` function is called. * * if (num1 / num2 >= Number.MIN_VALUE) * func1() * else * func2() */ /** * @property {Number} NaN * @static * Special "not a number" value. */ /** * @property {Number} NEGATIVE_INFINITY * Special value representing negative infinity; returned on overflow. * * The value of `Number.NEGATIVE_INFINITY` is the same as the negative value of the global object's * Infinity property. * * This value behaves slightly differently than mathematical infinity: * * * Any positive value, including POSITIVE_INFINITY, multiplied by NEGATIVE_INFINITY is NEGATIVE_INFINITY. * * Any negative value, including NEGATIVE_INFINITY, multiplied by NEGATIVE_INFINITY is * POSITIVE_INFINITY. * * Zero multiplied by NEGATIVE_INFINITY is NaN. * * NaN multiplied by NEGATIVE_INFINITY is NaN. * * NEGATIVE_INFINITY, divided by any negative value except NEGATIVE_INFINITY, is * POSITIVE_INFINITY. * * NEGATIVE_INFINITY, divided by any positive value except POSITIVE_INFINITY, is * NEGATIVE_INFINITY. * * NEGATIVE_INFINITY, divided by either NEGATIVE_INFINITY or POSITIVE_INFINITY, is NaN. * * Any number divided by NEGATIVE_INFINITY is Zero. * * Several JavaScript methods (such as the `Number` constructor, `parseFloat`, and `parseInt`) return * `NaN` if the value specified in the parameter is significantly lower than `Number.MIN_VALUE`. * * You might use the `Number.NEGATIVE_INFINITY` property to indicate an error condition that returns a * finite number in case of success. Note, however, that `isFinite` would be more appropriate in such * a case. * * In the following example, the variable smallNumber is assigned a value that is smaller than the * minimum value. When the `if` statement executes, `smallNumber` has the value `"-Infinity"`, so * `smallNumber` is set to a more manageable value before continuing. * * var smallNumber = (-Number.MAX_VALUE) * 2 * if (smallNumber == Number.NEGATIVE_INFINITY) { * smallNumber = returnFinite(); * } */ /** * @property {Number} POSITIVE_INFINITY * Special value representing infinity; returned on overflow. * * The value of `Number.POSITIVE_INFINITY` is the same as the value of the global object's Infinity * property. * * This value behaves slightly differently than mathematical infinity: * * * Any positive value, including POSITIVE_INFINITY, multiplied by POSITIVE_INFINITY is * POSITIVE_INFINITY. * * Any negative value, including NEGATIVE_INFINITY, multiplied by POSITIVE_INFINITY is * NEGATIVE_INFINITY. * * Zero multiplied by POSITIVE_INFINITY is NaN. * * NaN multiplied by POSITIVE_INFINITY is NaN. * * POSITIVE_INFINITY, divided by any negative value except NEGATIVE_INFINITY, is * NEGATIVE_INFINITY. * * POSITIVE_INFINITY, divided by any positive value except POSITIVE_INFINITY, is * POSITIVE_INFINITY. * * POSITIVE_INFINITY, divided by either NEGATIVE_INFINITY or POSITIVE_INFINITY, is NaN. * * Any number divided by POSITIVE_INFINITY is Zero. * * Several JavaScript methods (such as the `Number` constructor, `parseFloat`, and `parseInt`) return * `NaN` if the value specified in the parameter is significantly higher than `Number.MAX_VALUE`. * * You might use the `Number.POSITIVE_INFINITY` property to indicate an error condition that returns a * finite number in case of success. Note, however, that `isFinite` would be more appropriate in such * a case. * * In the following example, the variable `bigNumber` is assigned a value that is larger than the * maximum value. When the if statement executes, `bigNumber` has the value "Infinity", so `bigNumber` * is set to a more manageable value before continuing. * * var bigNumber = Number.MAX_VALUE * 2 * if (bigNumber == Number.POSITIVE_INFINITY) { * bigNumber = returnFinite(); * } */ //Methods /** * @method toExponential * Returns a string representing the number in exponential notation. * * A string representing a `Number` object in exponential notation with one digit before the decimal * point, rounded to `fractionDigits` digits after the decimal point. If the `fractionDigits` argument * is omitted, the number of digits after the decimal point defaults to the number of digits necessary * to represent the value uniquely. * * If you use the `toExponential` method for a numeric literal and the numeric literal has no exponent * and no decimal point, leave a space before the dot that precedes the method call to prevent the dot * from being interpreted as a decimal point. * * If a number has more digits that requested by the `fractionDigits` parameter, the number is rounded * to the nearest number represented by `fractionDigits` digits. See the discussion of rounding in the * description of the `toFixed` method, which also applies to `toExponential`. * * var num=77.1234; * * alert("num.toExponential() is " + num.toExponential()); //displays 7.71234e+1 * * alert("num.toExponential(4) is " + num.toExponential(4)); //displays 7.7123e+1 * * alert("num.toExponential(2) is " + num.toExponential(2)); //displays 7.71e+1 * * alert("77.1234.toExponential() is " + 77.1234.toExponential()); //displays 7.71234e+1 * * alert("77 .toExponential() is " + 77 .toExponential()); //displays 7.7e+1 * * @param {Number} fractionDigits An integer specifying the number of digits after the decimal * point. Defaults to as many digits as necessary to specify the number. * @return {String} Exponential notation of number. */ /** * @method toFixed * Returns a string representing the number in fixed-point notation. * * @return {String} A string representation of `number` that does not use * exponential notation and has exactly `digits` digits after the decimal place. * The number is rounded if necessary, and the fractional part is padded with * zeros if necessary so that it has the specified length. If `number` is greater * than 1e+21, this method simply calls `Number.toString()` and returns a string * in exponential notation. * * @param {Number} digits The number of digits to appear after the decimal point; this may be a * value between 0 and 20, inclusive, and implementations may optionally support a larger range of * values. If this argument is omitted, it is treated as 0. */ /** * @method toLocaleString * Returns a human readable string representing the number using the locale of the * environment. Overrides the `Object.prototype.toLocaleString` method. * * This method available to numbers will convert the number into a string which is suitable for * presentation in the given locale. * * var number = 3500 * console.log(number.toLocaleString()); // Displays "3,500" in English locale * * @return {String} String representing the number. */ /** * @method toPrecision * Returns a string representing the number to a specified precision in fixed- * point or exponential notation. * * A string representing a `Number` object in fixed-point or * exponential notation rounded to precision significant digits. See the * discussion of rounding in the description of the `toFixed` method, which also * applies to `toPrecision`. * * If the precision argument is omitted, behaves as Number.toString. If it is a * non-integer value, it is rounded to the nearest integer. After rounding, if * that value is not between 1 and 100 (inclusive), a RangeError is thrown. * * @param {Number} precision An integer specifying the number of significant digits. * @return {String} String that represents `Number` object. */ /** * @method toString * Returns a string representing the specified object. Overrides the * `Object.prototype.toString` method. * * The `Number` object overrides the `toString` method of the `Object` object; it does not inherit * `Object.toString`. For `Number` objects, the toString method returns a string representation of the * object in the specified radix. * * The `toString` method parses its first argument, and attempts to return a string representation in * the specified radix (base). For radixes above 10, the letters of the alphabet indicate numerals * greater than 9. For example, for hexadecimal numbers (base 16), A through F are used. * * If `toString` is given a radix not between 2 and 36, an exception is thrown. * * If the radix is not specified, JavaScript assumes the preferred radix is 10. * * var count = 10; * print(count.toString()); // displays "10" * print((17).toString()); // displays "17" * * var x = 7; * print(x.toString(2)); // displays "111" * * @param {Number} radix An integer between 2 and 36 specifying the base to use for representing * numeric values. * @return {String} The number represented as a string. */ /** * @method valueOf * Returns the primitive value of the specified object. Overrides the * `Object.prototype.valueOf` method. * * The `valueOf` method of `Number` returns the primitive value of a `Number` object as a number data * type. * * This method is usually called internally by JavaScript and not explicitly in code. * * var x = new Number(); * print(x.valueOf()); // prints "0" * * @return {Number} The primitive value of the number. */