# isSafeInteger

Test if a value is a number having a safe integer value.

## Usage

``````var isSafeInteger = require( '@stdlib/assert/is-safe-integer' );
``````

#### isSafeInteger( value )

Tests if a value is a `number` having a safe `integer` value.

``````var Number = require( '@stdlib/number/ctor' );

var bool = isSafeInteger( 5.0 );
// returns true

bool = isSafeInteger( new Number( 5.0 ) );
// returns true

bool = isSafeInteger( 2.0e200 );
// returns false

bool = isSafeInteger( -3.14 );
// returns false

bool = isSafeInteger( null );
// returns false
``````

#### isSafeInteger.isPrimitive( value )

Tests if a `value` is a primitive `number` having a safe `integer` value.

``````var Number = require( '@stdlib/number/ctor' );

var bool = isSafeInteger.isPrimitive( -3.0 );
// returns true

bool = isSafeInteger.isPrimitive( new Number( -3.0 ) );
// returns false
``````

#### isSafeInteger.isObject( value )

Tests if a `value` is a `Number` object having a safe `integer` value.

``````var Number = require( '@stdlib/number/ctor' );

var bool = isSafeInteger.isObject( 3.0 );
// returns false

bool = isSafeInteger.isObject( new Number( 3.0 ) );
// returns true
``````

## Notes

• An integer valued number is "safe" when the number can be exactly represented as a double-precision floating-point number. For example,

``````var MAX_SAFE_INTEGER = require( '@stdlib/constants/float64/max-safe-integer' );
// returns 9007199254740991

var x = 9007199254740992;
// returns 9007199254740992

var y = 9007199254740993;
// returns 9007199254740992

var bool = ( x === y );
// returns true
``````

In this example, `x` and `y` should be distinct, but they are not due to constraints imposed by storing numeric values in double-precision floating-point format. "Safe" integers are thus double-precision floating-point numbers having integer values with unequivocal binary representations.

## Examples

``````var Number = require( '@stdlib/number/ctor' );
var isSafeInteger = require( '@stdlib/assert/is-safe-integer' );

var bool = isSafeInteger( -5.0 );
// returns true

bool = isSafeInteger( 0.0 );
// returns true

bool = isSafeInteger( new Number( 5.0 ) );
// returns true

bool = isSafeInteger( 2.0e200 );
// returns false

bool = isSafeInteger( 5.256 );
// returns false

bool = isSafeInteger( 1.0/0.0 );
// returns false

bool = isSafeInteger( -1.0/0.0 );
// returns false

bool = isSafeInteger( NaN );
// returns false

bool = isSafeInteger( '5' );
// returns false

bool = isSafeInteger( null );
// returns false
``````