parseFloat() is an internal JavaScript function that takes a string and turns it into a floating-point number (a number with decimal places).
Imagine it as a translator:
- You feed it text that resembles a number.
- It returns a actual number JavaScript can perform math on.
Basic Usage
let num = parseFloat("3.14");
console.log(num); // 3.14 (as a number, not a string)
console.log(typeof num); // "number"
If you attempt to do math using the original string, it doesn't work:
"3.14" * 2; // 6.28 (works, but JS coerces automatically)
"3.14" + 2; // "3.142" (string concatenation!)
With parseFloat()
, you're in control:
parseFloat("3.14") + 2; // 5.14
Dealing with Extra Spaces or Characters
parseFloat()
is tolerant:
- It ignores leading/trailing white space.
- It reads until it encounters non-numeric strings.
console.log(parseFloat(" 42.5 ")); // 42.5
console.log(parseFloat("99 bottles")); // 99
console.log(parseFloat("bottles 99")); // NaN (Not a Number)
Special Cases
NaN: If it can't find anything that's a number, you get NaN.
parseFloat("hello"); // NaN
Scientific notation does work:
parseFloat("1.23e4"); // 12300
Integers still do work (just no decimals):
parseFloat("100"); // 100
Common Use Cases
User input (from forms)
let price = "49.99"; // comes as string
let tax = 0.05;
let total = parseFloat(price) * (1 + tax);
console.log(total); // 52.4895
Extracting numbers from sloppy strings
parseFloat("$123.45"); // NaN
parseFloat("123.45 USD"); // 123.45
(If currency symbols are first, you might need to tidy the string.)
When precision is important
parseFloat()
returns decimals. Use it if you anticipate fractional numbers.
If you only need whole numbers, use parseInt()
.
Advanced Tips
Check if parsing was successful
let val = parseFloat("hello");
if (isNaN(val)) {
console.log("Not a valid number");
}
Working with arrays of number strings
let arr = ["1.1", "2.2", "3.3"];
let nums = arr.map(parseFloat);
console.log(nums); // [1.1, 2.2, 3.3]
Difference from Number()
Number("123.45abc"); // NaN
parseFloat("123.45abc"); // 123.45
So:
- Use
Number()
for strict conversion. - Use
parseFloat()
if you want to get the leading number out of a string.
Quick Gotchas
parseFloat(" ")
→NaN
(empty string).parseFloat(null)
→NaN
.parseFloat(true)
→NaN
.parseFloat(3.14)
→3.14
(already a number, stays the same).
Summary
- Use
parseFloat()
to safely convert strings to decimal numbers. - It reads up to the first non-number character, then stops.
- Use
isNaN()
to determine if the result is valid. - Opt for
Number()
if you want to be more stringent.