[JS 코딩테스트 기록] 숫자형 관련 함수

개발견 배도르만·2023년 2월 21일
0

코딩테스트 with JS

목록 보기
1/2
post-thumbnail

1. 숫자형 변환 함수

특정 변수나 값을 Number type으로 바꾸는 함수

1) parseInt()

문자열을 정수로 반환하는 함수

let today = parseInt('20230101');

2) parseFloat()

문자열을 실수로 반환하는 함수

let myBodyWeightKg = parseFloat('99.9');

3) Number()

new 키워드와 함께 사용하면 생성자로 사용할 수 있다.
이러한 경우 숫자형 객체를 생성한다.

let today = new Number('20230101');

일반 함수로도 사용할 수 있다.

let tommorow = Number('20230102');

2. 정수형 변환 함수

숫자형의 변수나 값을 정수형으로 바꾸는 함수

1) Math.floor()

주어진 숫자보다 같거나 작은 정수 중 가장 큰 수를 반환한다.
숫자를 가장 가까운 정수로 내림한다.

const floatNum = 3.14;
const intNum = Math.floor(floatNum); // 3

2) Math.ceil()

주어진 숫자보다 같거나 큰 정수 중 가장 작은 수를 반환한다.
숫자를 가장 가까운 정수로 올림한다.

const floatNum = 3.14;
const intNum = Math.ceil(floatNum); // 4

3) Math.round()

주어진 숫자에서 가장 가까운 정수를 반환한다.
숫자를 정수로 반올림한다.
주어진 수가 정확히 정수와 정수의 중간이라면 가장 가까운 짝수 정수로 반올림한다.

const floatNum = 3.14;
const intNum = Math.round(floatNum); // 3

4) Math.trunc()

ECMA6에 도입된 함수이다.
주어진 숫자에서 소수 부분을 제외한 정수를 반환한다.
올림, 내림과는 다른 의미이다.

const floatNum = 3.14;
const intNum = Math.trunc(floatNum); // 3

위 코드에서는 Math.floor()을 사용해도 결과가 같겠지만 음의 소수에서 사용할 때를 떠올려본다면 다른 기능이라는 것을 알 수 있다.



❗ 알맞은 용도에 맞게 사용할 것!!

예를 들어 실수형을 정수형으로 변환하고 싶을 때 parseInt()는 적합하지 않음.
-> parseInt()의 본 기능은 '문자형'을 정수의 '숫자형'으로 반환하는 함수이다.

이유불문하고 결론부터 보자
출처 : mdn


  • parseInt()가 숫자끼리의 형변환에 적합하지 않은 이유

    • parseInt(string, radix)는 기본적으로 두 개의 매개변수를 갖는다.
      두 번째 매개변수로는 n진법에 대한 수(기수, radix)를 받으며
      디폴트 값이 10(진법)이 아니다.
      첫 번째 인자에 따라 다른 진법으로 반환될 수 있다.

    • 첫 번째 인자로 문자형이 아닌 값을 받으면 문자형으로 변환한다.
      숫자형 데이터를 넣으면 '굳이' 문자형을 거쳐 정수로 반환된다는 것.

    • 숫자형 자체에 문자가 포함되어 있는 경우도 있다.
      제곱을 표현할 때 6.022e23과 같이 표현하기도 하고
      Big Int형은 숫자 마지막에 n을 붙인다.(ex. 900719925474099267n)
      이 때, 예상하지 못한 반환값을 얻게 된다.(용량을 벗어난 경우)

    • 숫자로 파싱될 수 없는 문자는 읽지 않고, 해당 문자를 만나기 전까지의 값만 정수로 파싱한다(부호, e, n, 0x 등 여러 예외가 있다).


🤯 결론

무엇이든 알맞은 용도로 사용하자!

profile
네 발 개발 개

0개의 댓글