The JavaScript Number object
JavaScript has a single Number type for all numbers — integers and decimals alike. Convert text to a number with Number(x), parseInt() or parseFloat(); format with toFixed(2); and validate with Number.isNaN() and Number.isInteger(). Beware floating-point rounding: 0.1 + 0.2 is 0.30000000000000004.
Overview
JavaScript keeps things simple with one numeric type, Number, covering both whole numbers and decimals (there's also BigInt for very large integers). You write numbers as literals — 42, 3.14, 1e6 — and the usual arithmetic operators work as expected.
The most-used helpers are about converting and formatting. Number("42"), parseInt("42px") and parseFloat("3.14") turn strings into numbers (the parse versions tolerate trailing text). (19.876).toFixed(2) formats to a fixed number of decimals and returns a string ("19.88"), which is perfect for money. For validation, Number.isNaN(x) safely detects the special NaN value and Number.isInteger(x) checks for whole numbers.
The one trap everybody meets is floating-point precision. Because numbers are stored in binary, 0.1 + 0.2 doesn't give exactly 0.3 — it gives 0.30000000000000004. This isn't a JavaScript bug; it's how binary floating point works in every language. For display, round with Math.round() or toFixed(); for money, a common approach is to work in whole cents (integers) and divide only when displaying.
Syntax
Number("42"); // 42
parseInt("42px", 10); // 42
parseFloat("3.14rem"); // 3.14
(19.876).toFixed(2); // "19.88" (a string)
Number.isNaN(NaN); // true
0.1 + 0.2; // 0.30000000000000004
Example
<pre id="out" style="font:15px ui-monospace,monospace"></pre>
<script>
const raw = '49.95 USD';
const price = parseFloat(raw);
const withTax = price * 1.2;
document.getElementById('out').textContent =
'parsed: ' + price + '\n' +
'w/ tax: $' + withTax.toFixed(2) + '\n' +
'0.1+0.2: ' + (0.1 + 0.2);
</script>
Best practices
- Convert strings with
Number(), orparseInt()/parseFloat()when there's trailing text. - Format for display with
toFixed()(returns a string) and round with Math.round(). - Check values with
Number.isNaN()andNumber.isInteger()rather than the global versions. - Avoid floating-point surprises for money by working in integer cents and dividing only to display.
Frequently asked questions
Why is 0.1 + 0.2 not 0.3 in JavaScript?
0.30000000000000004. Round with toFixed() or Math.round() for display.How do I convert a string to a number?
Number(str), or parseInt(str, 10) / parseFloat(str) when the string has trailing characters.How do I round to 2 decimal places?
num.toFixed(2), which returns a string, or Math.round(num * 100) / 100 for a number.How do I check for NaN?
Number.isNaN(value). It's reliable, unlike comparing with === NaN, which is always false.