[Javascript] 문자열을 숫자로 변환하는 법 -parseInt()

CHAEY·2023년 12월 20일
0

javascript

목록 보기
1/1

📑 프로그래머스 lv.1 문제 풀이 중 알게된 함수 공부 기록


Q. 문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요.

🚩 풀이 방법

function solution(s) {
    var answer = parseInt(s,10);
    return answer;
}

🚩 조건이 들어간 풀이 방법

🟩 조건 :
  _  s의 길이는 1 이상 5이하입니다.
s의 맨앞에는 부호(+, -)가 올 수 있습니다.
s는 부호와 숫자로만 이루어져있습니다.
s는 "0"으로 시작하지 않습니다._
function solution(s) {
    var sign = 1;

    if (s[0] === '-') {
        sign = -1;
        s = s.slice(1); 
    } else if (s[0] === '+') {
        s = s.slice(1);
    }

    // 문자열이 "0"으로 시작하지 않도록 처리
    if (s[0] === '0' && s.length > 1) {
        // "0"으로 시작하는 경우 첫 번째 문자를 제외한 나머지 문자열로 업데이트
        s = s.slice(1);
    }

    // parseInt 함수를 사용하여 문자열을 정수로 변환하고 부호를 적용
    var answer = sign * parseInt(s, 10);

    return answer;
}

parseInt

  • Javascript에서 문자열을 숫자(number)로 형변환
    문자열을 파싱해서 숫자나 NaN(Not a Number)을 리턴

  • 목적 : 문자열에서 숫자 추출

parseInt() 함수 사용

parseInt(string, *radix);

🔸 파라미터
string : 숫자로 변환할 문자열
radix : ( *optional) string 문자열을 읽을 진법(수의 진법 체계의 진법)

🔸 리턴값
string을 정수로 변환한 값을 리턴
string의 첫 글자를 정수로 변경할 수 없으면 NaN(Not a Number) 값을 리턴


적용범위

  • 정수 값 parseInt("10"); //10
    : 문자열을 숫자로 변환하여 정수 리턴
  • 음수 값 parseInt("-10"); //-10
    : 문자열을 숫자로 변환하여 정수 음수 리턴
  • 실수 값 parseInt("10.9"); //10
    : 소수점을 제거한 후, 정수 값만 리턴
  • 문자열이 아닌 다른 타입의 값 parseInt(10); //10
    : 파라미터를 문자열로 변환하여 처리
  • 문자열의 첫글자가 숫자이고, 그 이후에 숫자가 아닌 다른 문자열
    parseInt("10n"); // 10
    parseInt("10nnn13"); // 10
    : 숫자가 아닌 문자 이후의 값은 무시하고, 그 이전의 숫자만 정수로 변환
  • 처음 공백 parseInt(" 10"); // 10
    : 문자열의 첫글자는 반드시 숫자여야 하지만, 처음에 오는 공백 문자는 허용
  • 뒤 공백 parseInt("10 "); // 10
    : 문자열의 첫글자가 숫자이면, 뒤에 오는 공백은 무시
  • 첫글자가 숫자가 아닌 경우 parseInt("k10"); // NaN
    : NaN(Not a Number)를 리턴
  • 공백만 존재 parseInt(""); // NaN
    : 문자열의 첫 글자가 숫자가 아니므로, NaN(Not a Number)를 리턴

🚀 정상 출력
: 정수, 음수, 실수, 문자열이 아닌 다른 타입의 값, 첫글자만 숫자인 문자열, 첫글자가 공백, 뒤 공백

⚒️ NaN 출력
: 첫글자가 숫자가 아닌 문자열, 공백만 존재


주의점

const age = prompt("are you OK?");

console.log(age, parseInt(age), age);

형을 변환해준다고 하기에 parseInt(변수)를 사용한 뒤에 변수의 타입을 다시 찍어보면 계속 number로 나오지 않을까?

그런데 위 코드를 찍어보니 첫 번째, 세 번째는 string 타입으로, 두 번째는 number 타입으로 출력
따라서 parseInt(변수)를 한 번 사용했다고 해서, 해당 변수의 타입이 number 타입으로 영구적으로 변하는 것은 아닌것으로 예상
parseInt 함수를 사용할 때만 임시로 형 변환이 되는 것이라 주의 필요


참조. 출처

0개의 댓글