I want to parse a user input which contains longitude and latitude. What I want to do is to coerce a string to a number, preserving its sign and decimal places. But what I want to do is to display a message when user’s input is invalid. Which one should I follow
parseFloat(x)
second
new Number(x)
third
~~x
fourth
+x
I’d use
Number(x), if I had to choose between those two, because it won’t allow trailing garbage. (Well, it “allows” it, but the result is aNaN.)That is,
Number("123.45balloon")isNaN, butparseFloat("123.45balloon")is123.45(as a number).As Mr. Kling points out, which of those is “better” is up to you.
edit — ah, you’ve added back
+xand~~x. As I wrote in a comment,+xis equivalent to using theNumber()constructor, but I think it’s a little risky because of the syntactic flexibility of the+operator. That is, it’d be easy for a cut-and-paste to introduce an error. The~~xform is good if you know you want an integer (a 32-bit integer) anyway. For lat/long that’s probably not what you want however.