JavaScript - isInteger
// JavaScript - The isInteger problem:
ECMAscript 6 introduces a new Number.isInteger() function. However, prior to
ECMAScript 6, this is a bit more complicated, since no equivalent of the
Number.isInteger() method is provided.
The issue is that, in the ECMAScript specification, integers only exist
conceptually; i.e., numeric values are always stored as floating point values.
function isInteger(x) { return (x^0) === x; }
function isInteger(x) { return Math.round(x) === x; }
function isInteger(x) { return (typeof x === 'number') && (x % 1 === 0); }
Do not use:
function isInteger(x) { return parseInt(x, 10) === x; }
While this parseInt-based approach will work well for many values of x, once x
becomes quite large, it will fail to work properly. The problem is that
parseInt() coerces its first parameter to a string before parsing digits.
Therefore, once the number becomes sufficiently large, its string representation
will be presented in exponential form (e.g., 1e+21). Accordingly, parseInt()
will then try to parse 1e+21, but will stop parsing when it reaches the e
character and will therefore return a value of 1.
page revision: 0, last edited: 14 Nov 2016 06:55