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