/JavaScript

# Number

The `Number` JavaScript object is a wrapper object allowing you to work with numerical values. A `Number` object is created using the `Number()` constructor.

## Syntax

`new Number(value);`

### Parameters

`value`
The numeric value of the object being created.

## Description

The primary uses of 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.

## Properties

`Number.EPSILON`
The smallest interval between two representable numbers.
`Number.MAX_SAFE_INTEGER`
The maximum safe integer in JavaScript (`253 - 1`).
`Number.MAX_VALUE`
The largest positive representable number.
`Number.MIN_SAFE_INTEGER`
The minimum safe integer in JavaScript (`-(253 - 1)`).
`Number.MIN_VALUE`
The smallest positive representable number - that is, the positive number closest to zero (without actually being zero).
`Number.NaN`
Special "not a number" value.
`Number.NEGATIVE_INFINITY`
Special value representing negative infinity; returned on overflow.
`Number.POSITIVE_INFINITY`
Special value representing infinity; returned on overflow.
`Number.prototype`
Allows the addition of properties to a `Number` object.

## Methods

`Number.isNaN()`
Determine whether the passed value is NaN.
`Number.isFinite()`
Determine whether the passed value is a finite number.
`Number.isInteger()`
Determine whether the passed value is an integer.
`Number.isSafeInteger()`
Determine whether the passed value is a safe integer (number between `-(253 - 1)` and `253 - 1`).
`Number.toInteger()`
Used to evaluate the passed value and convert it to an integer (or `Infinity`), but has been removed.
`Number.parseFloat()`
The value is the same as `parseFloat()` of the global object.
`Number.parseInt()`
The value is the same as `parseInt()` of the global object.

## `Number` instances

All `Number` instances inherit from `Number.prototype`. The prototype object of the `Number` constructor can be modified to affect all `Number` instances.

### Methods

`Number.prototype.toExponential()`
Returns a string representing the number in exponential notation.
`Number.prototype.toFixed()`
Returns a string representing the number in fixed-point notation.
`Number.prototype.toLocaleString()`
Returns a string with a language sensitive representation of this number. Overrides the `Object.prototype.toLocaleString()` method.
`Number.prototype.toPrecision()`
Returns a string representing the number to a specified precision in fixed-point or exponential notation.
`Number.prototype.toSource()`
Returns an object literal representing the specified `Number` object; you can use this value to create a new object. Overrides the `Object.prototype.toSource()` method.
`Number.prototype.toString()`
Returns a string representing the specified object in the specified radix (base). Overrides the `Object.prototype.toString()` method.
`Number.prototype.valueOf()`
Returns the primitive value of the specified object. Overrides the `Object.prototype.valueOf()` method.

## Examples

### 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:

```var biggestNum = Number.MAX_VALUE;
var smallestNum = Number.MIN_VALUE;
var infiniteNum = Number.POSITIVE_INFINITY;
var negInfiniteNum = Number.NEGATIVE_INFINITY;
var notANum = Number.NaN;
```

### Integer range for `Number`

The following example shows the minimum and maximum integer values that can be represented as `Number` object (for details, refer to ECMAScript standard, chapter 6.1.6 The Number Type):

```var biggestInt = 9007199254740991;
var smallestInt = -9007199254740991;
```

When parsing data that has been serialized to JSON, integer values falling out of this range can be expected to become corrupted when JSON parser coerces them to `Number` type. Using `String` instead is a possible workaround.

### 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');
console.log(Number(d));
```

This logs "819199440000".

### Convert numeric strings and null to numbers

```Number('123')     // 123
Number('12.3')    // 12.3
Number('123e-1')  // 12.3
Number('')        // 0
Number(null)      // 0
Number('0x11')    // 17
Number('0b11')    // 3
Number('0o11')    // 9
Number('foo')     // NaN
Number('100a')    // NaN
```

## Browser compatibilityUpdate compatibility data on GitHub

Desktop
Chrome Edge Firefox Internet Explorer Opera Safari
Basic support Yes Yes 1 Yes Yes Yes
`EPSILON` Yes Yes 25 No Yes 9
`MAX_SAFE_INTEGER` 34 Yes 31 No Yes 9
`MAX_VALUE` Yes Yes 1 Yes Yes Yes
`MIN_SAFE_INTEGER` 34 Yes 31 No Yes 9
`MIN_VALUE` Yes Yes 1 Yes Yes Yes
`NEGATIVE_INFINITY` Yes Yes 1 Yes Yes Yes
`NaN` Yes Yes 1 Yes Yes Yes
`POSITIVE_INFINITY` Yes Yes 1 Yes Yes Yes
`isFinite` 19 Yes 16 No 15 9
`isInteger` Yes Yes 16 No Yes Yes
`isNaN` 25 Yes 15 No Yes 9
`isSafeInteger` Yes Yes 32 No Yes 10
`parseFloat` Yes Yes 25 No Yes 9
`parseInt` Yes Yes 25 No Yes 9
`prototype` Yes Yes 1 Yes Yes Yes
`toExponential` Yes Yes 1 Yes Yes Yes
`toFixed` Yes Yes 1 Yes Yes Yes
`toInteger` No No 16 — 32 No No No
`toLocaleString` Yes Yes 1 Yes Yes Yes
`toPrecision` Yes Yes 1 Yes Yes Yes
`toSource` No No 1 No No No
`toString` Yes Yes 1 Yes Yes Yes
`valueOf` Yes Yes 1 Yes Yes Yes
Mobile
Android webview Chrome for Android Edge Mobile Firefox for Android Opera for Android iOS Safari Samsung Internet
Basic support Yes Yes Yes 4 Yes Yes Yes
`EPSILON` Yes Yes Yes 25 Yes 9 Yes
`MAX_SAFE_INTEGER` Yes Yes Yes 31 Yes 9 Yes
`MAX_VALUE` Yes Yes Yes 4 Yes Yes Yes
`MIN_SAFE_INTEGER` Yes Yes Yes 31 Yes 9 Yes
`MIN_VALUE` Yes Yes Yes 4 Yes Yes Yes
`NEGATIVE_INFINITY` Yes Yes Yes 4 Yes Yes Yes
`NaN` Yes Yes Yes 4 Yes Yes Yes
`POSITIVE_INFINITY` Yes Yes Yes 4 Yes Yes Yes
`isFinite` Yes Yes Yes 16 Yes Yes Yes
`isInteger` Yes Yes Yes 16 Yes Yes Yes
`isNaN` Yes Yes Yes 15 Yes 9 Yes
`isSafeInteger` Yes Yes Yes 32 Yes Yes Yes
`parseFloat` Yes Yes Yes 25 Yes 9 Yes
`parseInt` Yes Yes Yes 25 Yes 9 Yes
`prototype` Yes Yes Yes 4 Yes Yes Yes
`toExponential` Yes Yes Yes 4 Yes Yes Yes
`toFixed` Yes Yes Yes 4 Yes Yes Yes
`toInteger` No No No 16 — 32 No No No
`toLocaleString` Yes Yes Yes 4 Yes Yes Yes
`toPrecision` Yes Yes Yes 4 Yes Yes Yes
`toSource` No No No 4 No No No
`toString` Yes Yes Yes 4 Yes Yes Yes
`valueOf` Yes Yes Yes 4 Yes Yes Yes
Server
Node.js
Basic support Yes
`EPSILON` 0.12
`MAX_SAFE_INTEGER` 0.12
`MAX_VALUE` Yes
`MIN_SAFE_INTEGER` 0.12
`MIN_VALUE` Yes
`NEGATIVE_INFINITY` Yes
`NaN` Yes
`POSITIVE_INFINITY` Yes
`isFinite` 0.10
`isInteger` 0.12
`isNaN` 0.10
`isSafeInteger` 0.12
`parseFloat` 0.12
`parseInt` 0.12
`prototype` Yes
`toExponential` Yes
`toFixed` Yes
`toInteger` No
`toLocaleString` Yes
`toPrecision` Yes
`toSource` No
`toString` Yes
`valueOf` Yes