459,500 Members | 1,238 Online Need help? Post your question and get tips & solutions from a community of 459,500 IT Pros & Developers. It's quick & easy.

# compare string with numbers in javascript

 P: n/a if (123 > 33) will return true and if ("123" > 33) will return true So my question is, if the above behaviors are the same?? If string is a number, and compare with another number, it will be the same behavior as compare 2 numbers? In this case, it is comparing 2 strings that are numbers, so they are string comparisons here. correct? if ("123" > "33") will return true In this case, "33a" is not a number, that's why when it compare with another number, it always return false. correct? if ("33a" > 33) will return false please advise. thanks!! Jul 23 '05 #1
3 Replies

 P: n/a jr********@hotmail.com (Matt) writes: if (123 > 33) will return true and if ("123" > 33) will return true Correct. So my question is, if the above behaviors are the same?? If string is a number, and compare with another number, it will be the same behavior as compare 2 numbers? Yes. The "greater than" comparison operator, when given a number and another argument, will convert the other argument to a number. The conversion is the same as what the Number function does. In this case, it is comparing 2 strings that are numbers, so they are string comparisons here. correct? Correct. If *both* arguments are strings, the comparsion is lexical comparison. if ("123" > "33") will return true The result of ("123" > "33") is false, since the first character of the first string is smaller than the first character of the second string. In this case, "33a" is not a number, that's why when it compare with another number, it always return false. correct? Correct, because (Number("33a")) yields NaN, and (NaN > 33) is false. /L -- Lasse Reichstein Nielsen - lr*@hotpop.com DHTML Death Colors: 'Faith without judgement merely degrades the spirit divine.' Jul 23 '05 #2

 P: n/a Lasse Reichstein Nielsen wrote: Correct, because (Number("33a")) yields NaN, and (NaN > 33) is false. Actually, (Number.NaN < 33) is false as well. As is (Number.NaN == Number.NaN). (Number.NaN != Number.NaN) is true, which goes against common sense, but it's the documented behaviour: -- Grant Wagner comp.lang.javascript FAQ - http://jibbering.com/faq Jul 23 '05 #3

 P: n/a Grant Wagner writes: Actually, (Number.NaN < 33) is false as well. As is (Number.NaN == Number.NaN). (Number.NaN != Number.NaN) is true, which goes against common sense, I'd say that (NaN == NaN) being false is what goes against common sense. From that, I find it entirely logical that (NaN != NaN) is the same as !(NaN == NaN) /L -- Lasse Reichstein Nielsen - lr*@hotpop.com DHTML Death Colors: 'Faith without judgement merely degrades the spirit divine.' Jul 23 '05 #4

### This discussion thread is closed

Replies have been disabled for this discussion. 