(JavaScript) 문자열을 숫자로 변환하는 방법(Number, parseInt)

JavaScript에서 Number() 및 parseInt() 함수는 문자열을 숫자로 변환하는 데 사용됩니다.
그러나 두 기능은 서로 다른 방식으로 작동하며 각각 고유한 용도와 제한 사항이 있습니다.

1. 번호()

Number() 함수는 문자열을 숫자로 변환하는 가장 간단하고 일반적인 방법입니다.
이 함수는 인수로 전달되는 값의 유형에 따라 다르게 동작합니다.
예를 들어:

Number('123') // 123
Number('123.45') // 123.45
Number('0xFF') // 255
Number('1.23e+5') // 123000
Number('hello') // NaN
Number(true) // 1
Number(false) // 0
Number(null) // 0
Number(undefined) // NaN
Number({}) // NaN

Number() 함수는 문자열을 숫자로 변환할 때 문자열이 부동 소수점, 정수, 16진수 또는 지수 숫자로 표시되는지 여부를 자동으로 감지합니다.
그러나 문자열에 숫자가 아닌 문자가 포함된 경우 이 함수는 NaN(Not a Number) 값을 반환합니다.
또한 이 함수는 개체를 인수로 전달하면 NaN을 반환합니다.

2. 파싱()

parseInt() 함수는 문자열을 정수로 변환하는 데 사용됩니다.
이 함수는 첫 번째 인수로 전달된 문자열에서 숫자 부분만 추출하여 정수로 변환합니다.
예를 들어:

parseInt('123') // 123
parseInt('123.45') // 123
parseInt('0xFF') // 255
parseInt('1.23e+5') // 1
parseInt('hello') // NaN
parseInt(true) // NaN
parseInt(false) // NaN
parseInt(null) // NaN
parseInt(undefined) // NaN
parseInt({}) // NaN

문자열을 정수로 변환할 때 parseInt() 함수는 문자열이 10진수, 16진수 또는 8진수로 표현되는지 감지합니다.
또한 이 함수는 문자열 시작 부분에서 숫자가 아닌 문자를 만나면 변환을 중지합니다.
이러한 이유로 문자열이 유효한 숫자로 구성되지 않은 경우 parseInt() 함수는 NaN 값을 반환합니다.

parseInt() 함수는 두 개의 인수를 사용할 수도 있습니다.
두 번째 인수는 기본적으로 10진수인 숫자로 변환할 때 사용할 기준을 지정합니다.
예를 들어

parseInt('0xFF', 16) // 255
parseInt('77', 8) // 63
parseInt('101', 2) // 5

다음과 같이 두 번째 인자를 지정하여 parseInt() 함수를 호출하면 문자열을 지정된 기수로 표현한 숫자라고 가정하고 변환을 진행하며, 숫자 부분만 추출한다.
그러나 문자열에 숫자가 아닌 문자가 포함된 경우 함수는 해당 문자 뒤의 모든 문자를 무시합니다.
이 동작은 예기치 않은 결과를 초래할 수 있으므로 문자열이 유효한 숫자로 구성되어 있는지 확인하는 것이 중요합니다.

또한 parseInt() 함수는 문자열을 정수로 변환할 때 숫자의 부호를 인식하지 못합니다.
따라서 음수 부호가 있는 문자열을 parseInt() 함수로 변환하면 양수 값이 반환됩니다.
예를 들어:

parseInt('-123') // -123
parseInt('-0xFF') // -255

이 문제를 해결하기 위해 기호를 인식하는 parseInt() 함수의 변형이 있습니다.
이 변환 함수는 문자열에서 부호를 감지하고 적절한 부호가 있는 값을 반환합니다.

3. 요약

Number() 및 parseInt() 함수는 문자열을 숫자로 변환하는 데 사용됩니다.
Number() 함수는 부동 소수점, 정수, 16진수 및 지수를 인식 및 변환하고 NaN을 반환합니다.
반면에 parseInt() 함수는 정수를 추출하고 변환하여 문자열이 유효한 숫자로 구성되지 않은 경우 NaN을 반환합니다.
인수로 전달된 값을 숫자로 변환할 수 없는 경우 두 함수 모두 NaN을 반환하므로 올바른 동작을 위해 변환 결과를 확인해야 합니다.