How do you check if a number has a decimal in javascript?

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] {...}

reformed

4,24510 gold badges59 silver badges83 bronze badges

asked Feb 20, 2010 at 22:48

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

answered Feb 20, 2010 at 22:50

Andy EAndy E

330k83 gold badges469 silver badges441 bronze badges

19

Number.isInteger[23];  // true
Number.isInteger[1.5]; // false
Number.isInteger["x"]; // false: 

Number.isInteger[] is part of the ES6 standard and not supported in IE11.

It returns false for NaN, Infinity and non-numeric arguments while x % 1 != 0 returns true.

answered Mar 15, 2017 at 2:16

le_mle_m

18.3k9 gold badges61 silver badges74 bronze badges

6

Or you could just use this to find out if it is NOT a decimal:

string.indexOf["."] == -1;

dYale

1,4531 gold badge16 silver badges19 bronze badges

answered Oct 24, 2011 at 15:31

IkeIke

7135 silver badges2 bronze badges

11

Simple, but effective!

Math.floor[number] === number;

answered Mar 2, 2015 at 17:26

dYaledYale

1,4531 gold badge16 silver badges19 bronze badges

3

The most common solution is to strip the integer portion of the number and compare it to zero like so:

function Test[]
{
     var startVal = 123.456
     alert[ [startVal - Math.floor[startVal]] != 0 ]
}

answered Feb 20, 2010 at 23:25

ThomasThomas

62.9k11 gold badges93 silver badges139 bronze badges

11

//How about byte-ing it?

Number.prototype.isInt= function[]{
 return this== this>> 0;
}

I always feel kind of bad for bit operators in javascript-

they hardly get any exercise.

answered Feb 21, 2010 at 1:15

kennebeckennebec

100k31 gold badges104 silver badges126 bronze badges

2

Number.isSafeInteger[value];

In JavaScript, isSafeInteger[] is a Number method that is used to return a Boolean value indicating whether a value is a safe integer. This means that it is an integer value that can be exactly represented as an IEEE-754 double precision number without rounding.

answered Aug 10, 2021 at 12:58

aadityaaaditya

4697 silver badges19 bronze badges

1

Number.isInteger[] is probably the most concise. It returns true if it is an integer, and false if it isn't.

answered Sep 3, 2018 at 19:45

4

number = 20.5

if [number == Math.floor[number]] {

alert["Integer"]

} else {

alert["Decimal"]

}

Pretty cool and works for things like XX.0 too! It works because Math.floor[] chops off any decimal if it has one so if the floor is different from the original number we know it is a decimal! And no string conversions :]

answered Jun 6, 2017 at 0:41

0

var re=/^-?[0-9]+$/;
var num=10;
re.test[num];

answered Feb 21, 2010 at 0:09

ghostdog74ghostdog74

313k55 gold badges252 silver badges339 bronze badges

3

function isDecimal[n]{
    if[n == ""]
        return false;

    var strCheck = "0123456789";
    var i;

    for[i in n]{
        if[strCheck.indexOf[n[i]] == -1]
            return false;
    }
    return true;
}

Sirko

70.5k19 gold badges143 silver badges175 bronze badges

answered Oct 26, 2012 at 19:30

2

parseInt[num] === num

when passed a number, parseInt[] just returns the number as int:

parseInt[3.3] === 3.3 // false because 3 !== 3.3
parseInt[3] === 3     // true

answered Jan 21, 2015 at 19:05

MichaelMichael

21.4k33 gold badges128 silver badges182 bronze badges

1

convert number string to array, split by decimal point. Then, if the array has only one value, that means no decimal in string.

if[!number.split["."][1]]{
    //do stuff
}

This way you can also know what the integer and decimal actually are. a more advanced example would be.

number_to_array = string.split["."];
inte = number_to_array[0];
dece = number_to_array[1]; 

if[!dece]{
    //do stuff
}

answered Jul 3, 2016 at 14:14

KareemKareem

4,65540 silver badges35 bronze badges

Use following if value is string [e.g. from

Chủ Đề