I have a variable var number="1234", though the number is a numeric value but it is between "" so when I check it using typeof or by NaN I got it as a string .
function test()
{
var number="1234"
if(typeof(number)=="string")
{
alert("string");
}
if(typeof(number)=="number")
{
alert("number");
}
}
I got always alert("string"), can you please tell me how can I check if this is a number?
-
since you are storing it with "" it will be string only. you need to give var number = 12345Gaurav Shah– Gaurav Shah2011年07月23日 10:44:38 +00:00Commented Jul 23, 2011 at 10:44
-
1Have a look at the functions defined in this answer - stackoverflow.com/questions/18082/…ipr101– ipr1012011年07月23日 10:48:33 +00:00Commented Jul 23, 2011 at 10:48
6 Answers 6
As far I understand your question you are asking for a test to detect if a string represents a numeric value.
A quick test should be
function test() {
var number="1234"
return (number==Number(number))?"number":"string"
}
As Number, if called without the new keyword convert the string into a number.
If the variable content is untouched (== will cast back the numeric value to a string)
you are dealing with a number. It is a string otherwise.
function isNumeric(value) {
return (value==Number(value))?"number":"string"
}
/* tests evaluating true */
console.log(isNumeric("1234")); //integer
console.log(isNumeric("1.234")); // float
console.log(isNumeric("12.34e+1")); // scientific notation
console.log(isNumeric(12)); // Integer
console.log(isNumeric(12.7)); // Float
console.log(isNumeric("0x12")); // hex number
/* tests evaluating false */
console.log(isNumeric("1234e"));
console.log(isNumeric("1,234"));
console.log(isNumeric("12.34b+1"));
console.log(isNumeric("x"));
1 Comment
0 == ''.The line
var number = "1234";
creates a new String object with the value "1234". By putting the value in quotes, you are saying that it a string.
If you want to check if a string only contains numeric digits, you can use regular expressions.
if (number.match(/^-?\d+$/)) {
alert("It's a whole number!");
} else if (number.match(/^-?\d+*\.\d+$/)) {
alert("It's a decimal number!");
}
The pattern /^\d+$/ means: at the start (^) of the string, there is an optional minus sign (-?), then a digit (\d), followed by any more digits (+), and then the end of the string ($). The other pattern just looks for a point between the groups of digits.
1 Comment
2 Comments
Convert it to a number then compare it to the original string.
if ( parseFloat(the_string,10) == the_string ) {
// It is a string containing a number (and only a number)
}
Comments
because var number="1234" is a string. the double quotes makes it a literal.
if you want a number use it like this
var number = 1234;
Update:
If you are taking the input from a input tag forexample, the dataType will be string, if you want to convert it to a number, you can use the parseInt() function
var number = "1234";
var newNumber = parseInt(number);
alert(typeof newNumber); // will result in string
3 Comments
Another easy way:
var num_value = +value;
if(value !== '' && !isNaN(num_value)) {
// the string contains (is) a number
}
2 Comments
!isNaN(+('')) gives false. Also whitespace and null convert to zero too, so they will return true (though in this case null is not an expected value).