Language/JavaScript

parseInt( ) vs Number( )

eess 2024. 8. 27. 19:09

 

Javascript에서 parseInt( )와 Number( )의 차이를 정리해보았습니다.

 

parseInt( )

 

  • 문자열을 파싱해서 특정 진수의 정수를 반환합니다. 첫 번째 매개변수는 string, 두 번째 매개변수는 radix 입니다.
  • 문자열에서 첫 번째 숫자 부분을 정수로 변환하고, 소수점과 숫자 이후의 문자열은 무시합니다.
  • radix가 2~36 범위의 값이 아니거나, 공백이 아닌 첫 문자를 정수로 변환할 수 없는 경우 NaN을 반환합니다.
parseInt("123");         // 123 (문자열을 정수로 변환)
parseInt("123.45");      // 123 (소수점 이하 숫자는 무시)
parseInt("123abc");      // 123 (숫자 이후의 문자는 무시)
parseInt("  123  ");     // 123 (문자열 앞뒤 공백은 무시)

parseInt("abc123");      // NaN (숫자로 시작하지 않으면 NaN)
parseInt(undefined);     // NaN (undefined는 변환 불가능)
parseInt(null);          // NaN (null은 변환 불가능)
parseInt("");            // NaN (빈 문자열은 변환 불가능)
parseInt("  ");          // NaN (공백 문자열은 변환 불가능)

 

Number( )

 

  • 모든 타입을 number로 변환하여 반환합니다. 
  • Number()는 Date 객체는 number로 반환합니다.
  • boolean true는 1, false는 0으로 반환합니다.
  • undefined는 NaN, null은 0으로 반환합니다.
  • 소수점을 포함하여 숫자형 문자열을 숫자로 변환합니다.
let d = new Date("December 17, 1995 03:24:00");
console.log(Number(d)); // 819138240000

Number(true);        // 1 (true는 1로 변환)
Number(false);       // 0 (false는 0으로 변환)

Number("123");       // 123 (문자열을 숫자로 변환)
Number("123.45");    // 123.45 (소수점 포함하여 변환)

Number("123abc");    // NaN (숫자로 변환 불가능한 문자가 포함된 경우)
Number("abc");       // NaN (숫자로 변환 불가능한 경우)
Number(undefined);   // NaN (undefined는 변환 불가능)
Number(null);        // 0 (null은 0으로 변환)
Number("");          // 0 (빈 문자열은 0으로 변환)
Number("  ");        // 0 (공백 문자열은 0으로 변환)

 

 

정리

  • parseInt(), Number() 둘다 숫자 문자열을 number로 변환할 수 있습니다.
  • parseInt()
    • 문자열만 변환하고, 진법을 지정하는 두 번째 매개변수가 있습니다.
    • 소수점을 무시하고 정수로 반환합니다.
    • 빈 문자열, 공백 문자열, null은 모두 NaN으로 반환합니다.
  • Number()
    • 문자열과 boolean, Date도 number로 변환합니다.
    • 소수점까지 살립니다.
    • 빈 문자열, 공백 문자열, null은 0으로 변환합니다.
  • 제 개인적인 생각으로는...

    1) 소수점을 살려서 변환해야 할 경우 Number()를 사용하는 것이 적절하겠습니다.

    2) 입력값이 빈 문자열 / 공백 문자열 / null 이 될 수도 있는 경우,
      - 단순히 0으로 처리하고 싶다면 Number()가 좋겠습니다.
      - 반면, 잘못된 입력을 구별하기 위해 NaN으로 반환값을 받아서 처리하고 싶다면 parseInt()가 좋겠습니다.

 

참고

MDN - parseInt

MDN - Number