JavaScript parseInt ExamplesConvert strings to ints with the parseInt function. Use Number and parseFloat.
ParseInt. A program sometimes has a string but needs an int. For example in numerical operations, ints can be used but strings cannot be.
Conversion syntax. In JavaScript we can convert a string to an int with parseInt, a built-in method. Another option is with plus (to implicitly convert to an int).
First example. Here we have a string with 5 digits in it. To explore numeric conversions in JavaScript, we surround our parsing statements in a loop.
Part A We loop over the digits in our string with a for-loop and convert each one to a number.
Part B We use parseInt, a plus, and the Number constructor. Each string is converted in 3 different ways.
Sum We sum up all the numbers to show that they are valid digits and get the value 45.
JavaScript program that gets integers from string
var codes = "12345"; var sum = 0; // Part A: loop over chars and convert them to ints. for (var i = 0; i < codes.length; i++) { // Part B: apply numeric conversion. var test1 = parseInt(codes[i]); var test2 = +codes[i]; var test3 = Number(codes[i]); // Write our ints. console.log("INT: " + test1); console.log("INT: " + test2); console.log("INT: " + test3); // Sum the total. sum += test1 + test2 + test3; } // Write the sum. console.log("SUM: " + sum);
INT: 1 INT: 1 INT: 1 INT: 2 INT: 2 INT: 2 INT: 3 INT: 3 INT: 3 INT: 4 INT: 4 INT: 4 INT: 5 INT: 5 INT: 5 SUM: 45
ParseFloat. Suppose we have a number with a fractional part like 1.5. This is a floating-point number. We need to use the parseFloat method to retain the fractional part.
Here We use parseInt, which discards everything after the decimal place, and parseFloat.
JavaScript program that uses parseFloat
var test = "100.534"; var resultInt = parseInt(test); console.log("PARSEINT: " + resultInt); var resultFloat = parseFloat(test); console.log("PARSEFLOAT: " + resultFloat)
PARSEINT: 100 PARSEFLOAT: 100.534
IsNaN. Sometimes a string cannot be parsed. It may contain a word or other text. Here the parseInt method returns NaN, a special value in JavaScript.
IsNan We can use the isNaN built-in method to test to see if nothing was parsed by parseInt.
JavaScript program that uses parseInt, isNaN
// This string cannot be parsed. var test = "abc"; var result = parseInt(test); console.log("PARSEINT: " + result); // We can detect not a number with isNaN. if (isNaN(result)) { console.log("ISNAN"); }
PARSEINT: NaN ISNAN
Benchmark, parseInt. Which method should we use to convert strings to ints? Some options, like parseInt and Number, are available. We tested them in a loop with a switch.
Version 1 This version of the code uses the plus operator to convert a digit character into an integer.
Version 2 This version uses the parseInt method, which handles more cases of numeric conversion.
Version 3 Here we use the Number() function to get an integer from a string. We use each integer in a switch.
Result In a Chromium version from 2019 I found that using Number() is the fastest approach to converting a string to an int.
And Using parseInt took about twice the time. So avoiding parseInt unless needed is a good approach.
JavaScript program that benchmarks int parsing
var c = 0; var codes = "123456"; var x1 = performance.now(); // Version 1: use plus. for (var i = 0; i < 10000000; i++) { for (var z = 0; z < codes.length; z++) { switch (+codes[z]) { case 1: c++; break; case 2: c--; break; case 3: c += 2; break; default: c = 0; break; } } } var x2 = performance.now(); // Version 2: use parseInt. for (var i = 0; i < 10000000; i++) { for (var z = 0; z < codes.length; z++) { switch (parseInt(codes[z])) { case 1: c++; break; case 2: c--; break; case 3: c += 2; break; default: c = 0; break; } } } var x3 = performance.now(); // Version 3: use Number. for (var i = 0; i < 10000000; i++) { for (var z = 0; z < codes.length; z++) { switch (Number(codes[z])) { case 1: c++; break; case 2: c--; break; case 3: c += 2; break; default: c = 0; break; } } } var x4 = performance.now(); // Results. console.log("TIME 1: " + (x2 - x1)); console.log("TIME 2: " + (x3 - x2)); console.log("TIME 3: " + (x4 - x3));
TIME 1 (2019): 276.049 Plus TIME 2: 332.764 parseInt TIME 3: 270.944 Number
Notes, parseInt. We have found that using a plus to convert a string to an int is a fast solution. But the fastest approach is to do no conversion at all.
Tip With some JavaScript changes to how data is stored, you can often have the numbers in their native format already.
A summary. When necessary, a plus sign provides fast string to int conversions in Chromium. Other modern browsers seem to have similar benefits here.
Home
© 2007-2021 sam allen. see site info on the changelog