String to integer number
var n = parseInt('100',10); // 100; you want to use radix of 10 so you get a decimal number even with a leading 0
parseInt('123.45') // 123
parseInt('77') // 77
parseInt('077',10) // 77
parseInt('77',8) // 63 (= 7 + 7*8) base=8
parseInt('077') // 63 (= 7 + 7*8) base=8
parseInt('77',16) // 119 (= 7 + 7*16) base=16
parseInt('0x77') // 119 (= 7 + 7*16) base=16
parseInt('099') // 0 (9 is not an octal digit)
parseInt('99',8) // NaN (not-a-number value)
parseInt('0.1e6') // 0
var n = Math.floor('100.01'); // 100; floor automatically converts string to number
var n = Math.round('100'); // 100; equivalent to Math.round('100',0)
String to float number
parseFloat('1.5kg') // 1.5
parseFloat('55.3') // 55.3
parseFloat('055.3') // 55.3
parseFloat('0x55.3') // 0
parseFloat('.3') // 0.3
parseFloat('0.1e5') // 10000
The ultimate string-to-number conversion table:
| x | parseInt(x) | parseFloat(x) | Number(x) | +x | ~~x |
| "123" | 123 | 123 | 123 | 123 | 123 |
| "-123" | -123 | -123 | -123 | -123 | -123 |
| "123.45" | 123 | 123.45 | 123.45 | 123.45 | 123 |
| "-123.45" | -123 | -123.45 | -123.45 | -123.45 | -123 |
| "12e5" | 12 | 1200000 | 1200000 | 1200000 | 1200000 |
| "012" | 12 | 12 | 12 | 12 | 12 |
| "0xBABE" | 47806 | 0 | 47806 | 47806 | 47806 |
| "0xFFFFFFFF" | 4294967295 | 0 | 4294967295 | 4294967295 | -1 |
| "123456789012345678" | 123456789012345680 | 123456789012345680 | 123456789012345680 | 123456789012345680 | -1506741424 |
| "" | NaN | NaN | 0 | 0 | 0 |
| "123foo" | 123 | 123 | NaN | NaN | 0 |
| "123.45foo" | 123 | 123.45 | NaN | NaN | 0 |
| " 123 " | 123 | 123 | 123 | 123 | 123 |
| "foo" | NaN | NaN | NaN | NaN | 0 |
| null | NaN | NaN | 0 | 0 | 0 |
| undefined | NaN | NaN | NaN | NaN | 0 |
| true | NaN | NaN | 1 | 1 | 1 |
| false | NaN | NaN | 0 | 0 | 0 |
| {} | NaN | NaN | NaN | NaN | 0 |
| {} | NaN | NaN | 125 | 125 | 125 |
code for table:
format = function(rows) {
var lens = [];
rows.forEach(function(row) {
row.forEach(function(col, n) {
lens[n] = Math.max(lens[n] || 0, col.length);
})
});
return rows.map(function(row) {
return row.map(function(col, n) {
return new Array(lens[n] - col.length + 1).join(" ") + col;
}).join(" | ")
}).join("\n");
}
xs = [
"123", "-123", "123.45", "-123.45", "12e5", "012", "0xBABE",
"0xFFFFFFFF", "123456789012345678",
"", "123foo", "123.45foo", " 123 ", "foo",
null, window.foo, true, false,
{},
{valueOf:function() { return 125 }}
]
table = [[
"x",
"parseInt(x)",
"parseFloat(x)",
"Number(x)",
"+x",
"~~x"
]].concat(xs.map(function(x) {
return [
String(JSON.stringify(x)),
String(parseInt(x)),
String(parseFloat(x)),
String(Number(x)),
String(+x),
String(~~x)
]
}))
document.body.innerHTML = "[pre]" + format(table) + "[/pre]"