위코드-TIL-3 (JS-String, Number의 변환)

jin_sk·2020년 5월 27일
0

위코드

목록 보기
13/49

String, Number의 변환

자바스크리트는 데이터 타입을 신경쓰지 않는다
그래서 다른 언어보다 편하기도 하면서, 코드를 잘못 짜면 오류가 날 상황이 많아진다

다른 언어 (C, Java)에서는 한번 변수의 type이 확정되면,
그 후에 다른 type의 값을 할당할 수 가 없다

그런데 자바스크립트는 많이 역동적인 언어라,
선언한 변수의 type과 다른 값을 다시 할당하는 것이 가능하다

아래 예제를 살펴보면

코드

let a = 10;
console.log(a, typeof a);
a = "나는 String인데..";
console.log(a, typeof a);

결과

10 "number"
"나는 String인데.." "string"

변수 a의 숫자 10을 할당했는데,
다시 문자열 "나는 String인데.."를 재할당했다
다른 언어라면 다른 데이터타입의 값을 재할당할 수 없는데 자바스크립트는 가능하다


숫자인 문자열 + 숫자 => String
숫자 + 공백문자 => String

문자열과 숫자를 더하면 문자열이 된다
문자열에 + 연산자를 사용하면 문자열끼리 연결할 수 있다

let d = '5' + 5;
console.log(d)
console.log(typeof d);

결과

"55"
"string"

문자 + 문자

console.log('안녕' + '하세요'); // 결과 : 안녕하세요

숫자와 공백문자를 더해도 + 연산자를 사용하므로 문자열로 형변환된다

let numberAsString3 = 1234 + "";
console.log(numberAsString3, typeof numberAsString); 
// 결과 : 1234 string

숫자인 문자열 - 숫자 => Number
숫자인 문자열 - 숫자인 문자열 => Number
숫자인 문자열 - 문자열 => NaN

''""로 둘러쌓인 숫자는 문자열이나 - 연산자를 사용하면 숫자로 계산되어 진고, 데이터 타입도 Number로 바뀐다
계산이 되더라도 문자열로된 숫자는 꼭 Number로 형변환을 해주자!

그런데 ''""로 둘러쌓인 숫자에 - 연산자를 사용하면 NaN이 출력된다
NaNNot a number이라는 뜻이다
숫자가 아니나 타입은 숫자로 바뀐다

-연산자는 숫자에만 적용되는 연산자이므로 문자열엔 사용X

let bb = '200' - '10';
let ff = '200' - '안녕';

console.log(bb, typeof bb);
console.log(ff, typeof ff);

결과

190 "number"
NaN "number"

함수를 사용한 형변환 방법

1. 숫자로 형변환
Number(문자열인 숫자)
문자열로된 숫자를 number로 형변환

let birthYearInput = "2000";
console.log(typeof birthYearInput);  // 결과 : string

let numberBirthYear = Number(birthYearInput);
console.log(typeof numberBirthYear);  // 결과 : number

console.log(Number("1.901"));  // 결과 : 1.901

parseInt(문자열인 숫자, n진법)
문자열인 숫자를 n진법일 때의 값으로 바꾼다
생략하면 자동적으로 10진법으로 출력하며 소수부분은 버린다 (정수로 출력)

console.log(parseInt("1.901")); // 결과 : 1

parseFloat(문자열인 숫자)
문자열인 숫자를 실수형으로 바꿔서 출력한다

console.log(parseFloat("1.901")); // 결과 : 1.901

2. 문자로 형변환
숫자.toString()
Number형에서 String 형으로 변환하고 싶으면 toString() 메서드를 사용

let numberAsNumber = 1234;
let numberAsString = numberAsNumber.toString();
console.log(numberAsString, typeof numberAsString); 
// 결과 : 1234 string

String(숫자)

let numberAsNumber2 = 1234;
let numberAsString2 = String(numberAsNumber2);
console.log(numberAsString2, typeof numberAsString2); 
// 결과 : "1234" "string"

예제

function nationalPensionRemainingYearCount(age_string) {
  // Your code here
  if (Number(age_string) < 65) {
    return "앞으로 " + (65 - Number(age_string)) + "년 남으셨습니다";
    //return "앞으로 " + (65 - age_string) + "년 남으셨습니다";
  } else {
    return "앞으로 " + (65 - Number(age_string)) + "년 남으셨습니다";
  }
}

console.log(nationalPensionRemainingYearCount("66"))

결과

앞으로 -1년 남으셨습니다

age_string이 문자열인 숫자더라도
숫자 - 문자열인 숫자 = 숫자 이므로 형변환을 해주지 않아도 되나
정확한 계산을 위해 해주도록 하자..

0개의 댓글