본문 바로가기
프로그래밍/JavaScript

[JS] 소수를 정수를 만드는 여러 방법 - floor, ceil, round, trunc, parseInt

by hi-rachel 2023. 7. 11.

참고 문제

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

다른 언어 공부하다 다른 언어로 풀려고 하면 기본적인 게 생각이 안 날 때도 있다.. 문법도 금방 알아차려도 순간 헷갈리고.. 다른 사람도 그런지 모르겠다. 간단한 것도 정리를 잘 해놓자! (파이썬 풀다 자바스크립트로 오면 ;, { } 등 붙여주기 귀찮아진다.)

 


✏️ JavaScript에서 정수를 만드는 여러 방법

1. Math.floor() - 소수점 내림

Math.floor(x), x보다 작거나 같은 가장 큰 정수를 반환한다. (양수에서 항상 뒤 소수점을 모두 버린다)

console.log(Math.floor(5.999)) // 5

console.log(Math.floor(-0)) // -0

console.log(Math.floor(-Infinity)) // -Infinity

console.log(Math.floor(-45.95)) // -46

 

2. Math.ceil() - 소수점 올림

항상 올림하여 주어진 숫자보다 크거나 같은 더 작은 정수를 반환한다.

console.log(Math.ceil(.82)) // 1

console.log(Math.ceil(7.0000002)) // 8

console.log(Math.ceil(-7.004)) // -7

console.log(Math.ceil(Infinity)) // Infinity

 

3.  Math.round() - 소수점 반올림

가장 가까운 정수로 반올림한 숫자 값을 반환한다.

console.log(Math.round(5.95)) // 6

console.log(Math.round(5.05)) // 5

console.log(Math.round(-5.95)) // -6

console.log(Math.round(-5.05)) // -5
💡 인수의 소수 부분이 0.5보다 크면 인수는 절대값이 다음으로 높은 정수로 반올림됩니다. 
      0.5보다 작으면 절댓값이 작은 정수로 반올림합니다. 
     소수 부분이 정확히 0.5이면 인수는 +∞ 방향으로 다음 정수로 반올림됩니다.

 

4.  Math.trunc() - 소수점 제거

(truncate = 길이를 줄이다, 데이터베이스 명령어 TRUNCATE은 테이블의 데이터를 전부 삭제하고 사용하고 있던 공간을 반납하는 것을 의미, 참고)

소수 자릿수를 제거하여 숫자의 정수 부분을 반환한다. (=> 인수가 양수인지 음수인지에 관계없이 무조건 소수점을 잘라 반환해 주기 때문에 소수점 뒷자리를 생각하지 않고 오로지 소수를 정수로 바꿔줄 때 적합)

console.log(Math.trunc(13.37)) // 13

console.log(Math.trunc(-0.123)) // -0

 

5.  parseInt() - 문자열 => 정수

parseInt() 함수는 문자열 인수를 구문 분석(parse)하고 지정된 기수(radix_ the base in mathematical numeral systems)의 정수로 반환 = 문자열을 정수로 바꿔주는 함수

 

// Syntax
parseInt(string) // string은 정수로 시작되는 문자열, 공백은 무시된다.
parseInt(string, radix) // 기본값

// 모두 15 반환
parseInt("0xF", 16); // 15
parseInt("F", 16);
parseInt("17", 8);
parseInt("015", 10); // but `parseInt('015', 8)` will return 13
parseInt("15,123", 10);
parseInt("FXX123", 16);
parseInt("1111", 2);
parseInt("15 * 3", 10);
parseInt("15e2", 10);
parseInt("15px", 10);
parseInt("12", 13);

// NaN 반환
parseInt("Hi", 8) // NaN
parseInt("546", 2) // Digits other than 0 or 1 are invalid for binary radix

// 문자열이 아닌 경우 36기수와 함께 써주면 36기수의 해당 숫자 반환
parseInt(null, 36); // 1112745: The string "null" is 1112745 in base 36
parseInt(undefined, 36); // 86464843759093: The string "undefined" is 86464843759093 in base 36

 

소수를 정수로 만들고 싶을 때 사용한다면 아래와 같이 활용

※ 일반적으로 비문자열에 사용하는 것은 좋지 않다. (작은 숫자들에서만 효과) => Math.trunc() 사용하기

parseInt(15.99, 10); // 15
parseInt(-15.1, 10); // -15

parseInt("15.99", 10); // 15