How to check if a number is float or integer?-Collection of common programming errors
how to find if a number is float or integer?
1.25 --> float
1 --> integer
0 --> integer
0.25 --> float
-
check a remainder when dividing by 1:
function isInt(n) { return n % 1 === 0; }If you don’t know that the argument is a number-
function isInt(n) { return typeof n === 'number' && n % 1 == 0; }If you also want to include examples such as 1E308 is a float, and not an integer:
function isInt(n) { return typeof n === 'number' && parseFloat(n) == parseInt(n, 10) && !isNaN(n); } // 6 characters -
Try this.
function isFloat (n) { return n===+n && n!==(n|0); } function isInteger (n) { return n===+n && n===(n|0); } -
Here are efficient functions that check if the value is a number or can be safely converted to a number:
function isNumber(value) { if ((undefined === value) || (null === value)) { return false; } if (typeof value == 'number') { return true; } return !isNaN(value - 0); }And for integers (would return false if the value is a float):
function isInteger(value) { if ((undefined === value) || (null === value)) { return false; } return value % 1 == 0; }The efficiency here is that parseInt (or parseNumber) are avoided when the value already is a number. Both parsing functions always convert to string first and then attempt to parse that string, which would be a waste if the value already is a number.
Thank you to the other posts here for providing further ideas for optimization!
-
You can use a simple regular expression:
function isInt(value) { var er = /^[0-9]+$/; return ( er.test(value) ) ? true : false; }Or you can use the below functions too, according your needs. They are developed by the PHPJS Project.
is_int()=> Check if the variable type is Integer and if its content is Integeris_float()=> Check if the variable type is Float and if its content is Integerctype_digit()=> Check if the variable type is String and if its content has only decimal digits -
Why not something like this:
var isInt = function(n) { return parseInt(n) === n }; -
It really depends on what you want to achieve. If you want to “emulate” strongly typed languages then I suggest you not trying. As others mentioned all numbers have the same representation (the same type).
Using something like Claudiu provided:
isInteger( 1.0 )-> truewhich looks fine for common sense, but in something like C you would get
false -
As others mentioned, you only have doubles in JS. So how do you define a number being an integer? Just check if the rounded number is equal to itself:
function isInteger(f) { return typeof(f)==="number" && Math.round(f) == f; } function isFloat(f) { return typeof(f)==="number" && !isInteger(f); } -
THIS IS FINAL CODE FOR CHECK BOTH INT AND FLOAT
function isInt(n) { if(typeof n == 'number' && Math.Round(n) % 1 == 0) { return true; } else { return false; } }OR
function isInt(n) { return typeof n == 'number' && Math.Round(n) % 1 == 0; } -
function isInteger(n) { return ((typeof n==='number')&&(n%1===0)); } function isFloat(n) { return ((typeof n==='number')&&(n%1!==0)); } function isNumber(n) { return (typeof n==='number'); } -
function isInt(n) { return n != "" && !isNaN(n) && Math.round(n) == n; } function isFloat(n){ return n != "" && !isNaN(n) && Math.round(n) != n; }works for all cases.
-
Another method is:
function isFloat(float) { return /\./.test(float.toString()); }Might not be as efficient as the others but another method all the same.
-
!!(24%1) // false !!(24.2%1) // true -
For integers I use this
function integer_or_null(value) { if ((undefined === value) || (null === value)) { return null; } if(value % 1 != 0) { return null; } return value; } -
It really doesn’t have to be so complicated. The numeric value of an integer’s parseFloat() and parseInt() equivalents will be the same. Thus you can do like so:
function isInt(value){ return (parseFloat(value) == parseInt(value)) && !isNaN(value); }Then
if (isInt(x)) // do workThis will also allow for string checks and thus is not strict. If want a strong type solution (aka, wont work with strings):
function is_int(value){ return !isNaN(parseInt(value * 1) } -
In java script all the numbers are
internally 64 bit floating point, same as double in java. There are no diffrent types in javascript, all are represented by typenumber. Hence you wil l not be able make ainstanceofcheck. However u can use the above solutions given to find out if it is a fractional number. designers of java script felt with a single type they can avoid numerous type cast errors. -
floatvalues consists of., so here we can useindexOfmethod.function isInt(number){ if(number.toString().indexOf(".") > -1) return false; // it is float else return true; //it is integer }The above code is only applicable if the given variable is
number. if you are not sure about the type of variable , then do the following before the above code://as suggested by @kennebec function isNumber(number){ return typeof n === 'number' } -
Any Float number with a zero decimal part (e.g. 1.0, 12.00, 0.0) are implicitly cast to Integer, so it is not possible to check if they are Float or not.
-
Here’s what I use for integers:
Math.ceil(parseFloat(val)) === valShort, nice 🙂 Works all the time. This is what David Flanagan suggests if I’m not mistaken.
-
parseInt(yourNumber)=== parseFloat(yourNumber)
Originally posted 2013-11-09 21:01:54.