# javascript string to number

## 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]"
```