Search code examples
javascriptvalidationnumbersinteger

Check if a number has a decimal place/is a whole number


I am looking for an easy way in JavaScript to check if a number has a decimal place in it (in order to determine if it is an integer). For instance,

23 -> OK
5 -> OK
3.5 -> not OK
34.345 -> not OK
if(number is integer) {...}

Solution

  • Using modulus will work:

    num % 1 != 0
    // 23 % 1 = 0
    // 23.5 % 1 = 0.5
    

    Note that this is based on the numerical value of the number, regardless of format. It treats numerical strings containing whole numbers with a fixed decimal point the same as integers:

    '10.0' % 1; // returns 0
    10 % 1; // returns 0
    '10.5' % 1; // returns 0.5
    10.5 % 1; // returns 0.5