LHJ

I'm a FE developer.

8-6. Number 오브젝트 / String 타입으로 변환, 지역화 문자

24 Nov 2020 » js_beginner

49. String 타입으로 변환, 지역화 문자

toString()

구분데이터(값)
data변환대상
파라미터진수(2~36)opt, 디폴트: 10진수
반환변환한 값

파라미터에 진수 전달이 가능합니다.
진수 전달을 하지않으면 10진수가 기본값으로 전달됩니다.

  • data를 String 타입으로 변환

      var value = 20;
      console.log(20 === value.toString()); // false
      console.log(value.toString(16)); // 14
    
    1. 20 === value.toString()의 결과는 false
      20을 String 타입으로 변환하기 때문
    2. value.toString(16)
      20을 16진수로 변환하며 값은 14

16 진수를 전달하였기 때문에 20이 16진수로 변환되어 값이 14가 됩니다.

  • 변환할 때 주의사항

      console.log(20..toString()); // 20
    
    1. 20.toString() 형태로 작성하면 에러가 납니다.
    2. 20이 아니라 20. 을 변환 대상으로 인식하므로 점(.)이 없는 valuetoString() 형태가 되기 때문
    3. 코드처럼 20..을 작성합니다.

20..toString()이라고 작성해야 됩니다.
두번째 점은 값과 함수를 구분하는 점입니다.
앞에 첫번째 점은 20.0에서 0을 작성하지 않은 것과 같습니다.
즉, 20.0으로 작성해야될 것을 20. 으로 작성한 것입니다.
따라서 20..toString()이 아닌 20.toString()으로 작성하면 에러가 납니다.

이것은 IEEE 754 기준을 따르기 때문에 그런 것입니다.
자바스크립트는 실수로 처리하기 때문에 그렇습니다.

20이 정수가 아니라 실수라는 것이죠. 20.0이라는 것입니다.

toLocaleString()

구분데이터(값)
data변환 대상
파라미터사용하지 않음
반환변환한 값

  • 숫자를 브라우저가 지원하는 지역화 문자로 변환

    • 지역화 지원 및 브라우저 개발사에 일임
    • 지역화를 지원하지 않으면 toString()으로 변환

  • 스펙 상태

    • ES5: 파라미터 사용 불가
    • ES6: 파라미터에 언어 타입 사용 가능

숫자를 브라우저가 지원하는 지역화 문자로 변환합니다.
여기서 지역화란 한국, 일본, 프랑스 등등 을 뜻합니다.
그런데 지역화 지원 및 형태를 브라우저 개발자에 일임했습니다.
따라서 브라우저마다 조금씩 다를 수 있다는 뉘앙스가 풍깁니다.
이런점에 유의해서 toLocaleString() 함수를 사용해야 됩니다.

지역화를 지원하지 않으면 toString() 으로 변환합니다.
ES5 에서는 파라미터 사용이 불가능합니다.
그런데 ES6에서는 파라미터에 언어타입을 사용할 수 있습니다.

var value = 1234.56;
console.log(value.toLocaleString());                          // 1,234.56
console.log(value.toLocaleString('de-DE'));                   // 1.234,56
console.log(value.toLocaleString('zh-Hans-CN-u-nu-hanidec')); // 一,二三四.五六
  1. 파라미터를 작성하지 않았을 때, 1234.56에 콤마(,)를 삽입하여 1,234.56으로 출력
  2. 파라미터에 de-DE(독일) 작성
    콤마를 점(.)으로, 점을 콤마로 표시
  3. 중국 한자 표시

유럽은 우리와 다르게 , 를 .으로 .을 , 로 작성한다.