parseFloat() 전역 함수
parseFloat() 전역 함수
parseFloat()는 문자열 인자를 파싱해 부동 소수점 숫자를 반환하는 전역 함수입니다. 문자열의 시작에서 유효한 숫자 리터럴을 만들어내는 가장 긴 부분 문자열을 선택하므로, 뒤에 붙은 비숫자 문자는 자동으로 무시됩니다.
본문
개요
parseFloat() 함수는 문자열 인자를 파싱해 부동 소수점 숫자를 반환합니다.
기본적인 사용 예는 다음과 같습니다.
function circumference(r) {
return parseFloat(r) * 2.0 * Math.PI;
}
console.log(circumference(4.567));
// Expected output: 28.695307297889173
console.log(circumference("4.567abcdefgh"));
// Expected output: 28.695307297889173
console.log(circumference("abcdefgh"));
// Expected output: NaN
구문(Syntax)
parseFloat(string)
매개변수
- string — 파싱할 값으로, 문자열로 강제 변환됩니다. 이 인자의 앞부분 공백은 무시됩니다.
반환값 — 주어진 string에서 파싱된 부동 소수점 숫자, 또는 첫 번째 비-공백 문자가 숫자로 변환될 수 없을 때 NaN입니다.
참고: JavaScript는 언어 수준에서 "부동 소수점 숫자"와 "정수"를 구분하지 않습니다.
parseInt()와parseFloat()는 단지 파싱 동작만 다를 뿐 반환값이 반드시 다르지는 않습니다. 예를 들어parseInt("42")와parseFloat("42")는 같은 값인 Number 42를 반환합니다.
설명(Description)
parseFloat 함수는 첫 번째 인자를 문자열로 변환하고, 그 문자열을 십진수 리터럴로 파싱한 뒤 숫자 또는 NaN을 반환합니다. 이 함수가 받아들이는 숫자 구문은 다음과 같이 요약할 수 있습니다.
parseFloat()가 받아들이는 문자는 더하기 부호(+), 빼기 부호(-U+002D HYPHEN-MINUS), 십진 숫자(0–9), 소수점(.), 지수 표시(e또는E), 그리고"Infinity"리터럴입니다.+/-부호는 문자열의 맨 처음, 또는e/E문자 바로 뒤에만 엄격하게 나타날 수 있습니다. 소수점은 한 번만 나타날 수 있고e/E문자 앞에서만 가능합니다.e/E문자는 한 번만 나타날 수 있고 앞에 숫자가 하나 이상 있어야 합니다.- 인자의 앞쪽 공백은 잘려나가 무시됩니다.
parseFloat()은 문자열이 0개 이상의 공백이 앞선"Infinity"또는"-Infinity"로 시작하면Infinity또는-Infinity를 파싱해 반환할 수도 있습니다.parseFloat()은 처음부터 시작해 유효한 숫자 리터럴을 생성하는 가장 긴 부분 문자열을 선택합니다. 유효하지 않은 문자를 만나면 그 지점까지 표현된 숫자를 반환하며, 그 유효하지 않은 문자와 뒤따르는 모든 문자를 무시합니다.- 인자의 첫 문자가 위 구문에 따라 합법적인 숫자 리터럴을 시작할 수 없으면
parseFloat은NaN을 반환합니다.
구문적으로 parseFloat()는 Number() 함수가 받아들이는 구문의 부분 집합을 파싱합니다. 즉 parseFloat()은 0x, 0b, 0o 접두사가 있는 비-십진 리터럴을 지원하지 않지만 그 외에는 모두 지원합니다. 그러나 parseFloat()은 Number()가 NaN을 반환하게 만드는 뒤따르는 유효하지 않은 문자를 무시하므로 Number()보다 더 관대합니다.
숫자 리터럴과 Number()와 유사하게, parseFloat()이 반환하는 숫자는 부동 소수점 범위와 부정확성 때문에 문자열이 나타내는 숫자와 정확히 같지 않을 수 있습니다. -1.7976931348623158e+308 – 1.7976931348623158e+308 범위를 벗어나는 숫자(see Number.MAX_VALUE)에 대해서는 -Infinity 또는 Infinity가 반환됩니다.
예제
다음 예들은 모두 3.14를 반환합니다.
parseFloat(3.14);
parseFloat("3.14");
parseFloat(" 3.14 ");
parseFloat("314e-2");
parseFloat("0.0314E+2");
parseFloat("3.14some non-digit characters");
parseFloat({
toString() {
return "3.14";
},
});
parseFloat()가 NaN을 반환하는 경우 — 다음 예는 NaN을 반환합니다.
parseFloat("FF2");
덧붙여, 문자열 NaN 자체도 parseFloat()이 받아들이는 유효하지 않은 구문이므로 "NaN"을 전달해도 NaN이 반환됩니다.
parseFloat("NaN"); // NaN
Infinity 반환하기 — 숫자가 배정밀도 64비트 IEEE 754-2019 형식 범위를 벗어나면 Infinity 값이 반환됩니다.
parseFloat("1.7976931348623159e+308"); // Infinity
parseFloat("-1.7976931348623159e+308"); // -Infinity
문자열이 "Infinity" 또는 "-Infinity"로 시작해도 Infinity가 반환됩니다.
parseFloat("Infinity"); // Infinity
parseFloat("-Infinity"); // -Infinity
BigInt 값과의 상호작용 — parseFloat()은 BigInt 값을 처리하지 못합니다. n 문자에서 멈추고 앞의 문자열을 가능한 정밀도 손실과 함께 일반 정수로 취급합니다. BigInt 값이 parseFloat()에 전달되면 문자열로 변환되고, 그 문자열이 부동 소수점 숫자로 파싱되어 정밀도 손실이 발생할 수 있습니다.
parseFloat(900719925474099267n); // 900719925474099300
parseFloat("900719925474099267n"); // 900719925474099300
대신 문자열을 (n 문자 없이) BigInt() 함수에 전달해야 합니다.
BigInt("900719925474099267");
// 900719925474099267n