![]() To work correctly with larger numbers, you should use the rounding methods Math.floor("3000000000.654") = 3000000000īear in mind that coercion understands exponential notation and Infinity, so 2e2 is 200 rather than NaN, while the parse methods don't. If the integer cannot be represented in 32 bits, it will wrap. Note that this will not do want you want for large integers. Var bitwised = Number("97.654")|0 // do not use for large numbersĪny bitwise operator (here I've done a bitwise or, but you could also do double negation as in an earlier answer or a bit shift) will convert the value to a 32 bit integer, and most of them will convert to a signed integer. Var fixed = Number("97.654").toFixed(0) // rounded rather than truncated There are a few ways of doing this: var rounded = Math.floor(Number("97.654")) // other options are Math.ceil, Math.round Obviously, converting to a Number gives you a value that might be a float rather than an integer, so if you want an integer, you need to modify it. Since you want a primitive number rather than a Number wrapper object, make sure you don't put new in front of the Number function. It's more strict: if it doesn't understand the whole of the string than it returns NaN, so you can't use it for strings like 97px. This has different behavior to the parse methods (although it still ignores whitespace). I prefer to do this explicitly, var cast = Number("97") parseInt understands radixes up to base 36, in which case both upper and lower case letters are treated as equivalent.Ĭhanging the Type of a String to a NumberĪll of the other tricks mentioned above that don't use parseInt, involve implicitly coercing the string into a number. The standard actually changed with ECMAScript 5, so modern browsers no longer trigger octal when there's a leading 0 if no radix has been specified. The behaviour for hexadecimal is triggered by having the string start with 0x if no radix is specified, e.g., 0xff. In older browsers, if the string started with a 0, it would be interpreted as octal if the radix wasn't specified which took a lot of people by surprise. It's good practice to always specify the radix as the second argument. Here's an example of it doing something different to what you want, and giving no indication that anything went wrong: var widgetsSold = parseInt("97,800", 10) // widgetsSold is now 97 Whitespace at the beginning of the string is ignored. Parsing will stop silently if it hits a character it doesn't recognise, which can be useful for parsing strings like "92px", but it's also somewhat dangerous, since it won't give you any kind of error on bad input, instead you'll get back NaN unless the string starts with a number. ParseInt and parseFloat are the two functions used for parsing strings to numbers. You can also do the same thing explicitly with the Number function. ![]() ![]() All of the tricks in the other answers (e.g., unary plus) involve implicitly coercing the type of the string to a number. One way is to parse it and the other way is to change its type to a Number. There are two main ways to convert a string to a number in JavaScript. Interestingly, Math.round (like Math.floor) will do a string to number conversion, so if you want the number rounded (or if you have an integer in the string), this is a great way, maybe my favorite: var round = Math.round If you're the type who forgets to put the radix in when you call parseInt, you can use parseFloat and round it however you like. Or, if you're going to be using Math.floor several times: var floor = Math.floor If your string is or might be a float and you want an integer: var x = Math.floor("1000.01") // floor() automatically converts string to number ![]() If your string is already in the form of an integer: var x = +"1000" ![]() So you get a decimal number even with a leading 0 and an old browser () parseInt() var x = parseInt("1000", 10) // You want to use radix 10 If that doesn't work for you, then there are the parseInt, unary plus, parseFloat with floor, and Math.round methods. The simplest way would be to use the native Number function: var x = Number("1000") ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |