처음 '해당 숫자를 0진수로 변환해라'를 보면 당황스러울텐데 아주 간단하게 바꿔주는 메서드가 있다.
해당 숫자에 .toString(바꾸고 싶은 진수) 해주면 된다.
▶ Number.prototype.toString()
toString()
toString(radix)
: toString() 메서드는 지정된 숫자 값을 나타내는 문자열을 반환한다.
- 16진수부터 9보다 큰 숫자를 나타내기 위해 a~f 알파벳 문자가 사용된다.
- 지정된 숫자 값이 음수이면 부호가 유지된다.
- 숫자가 정수가 아닌 경우 소수점(decimal point, .)을 사용하여 소수점을 구분하고, 기수가 10이고 숫자의 크기가 10**21 보다 크거나 같거나 10**-6 보다 작은 경우 과학적 표기법(Scientific notation)이 사용된다.
매개변수
radix : 숫자 값을 나타내는 데 사용할 기준을 지정하며 2 ~ 36 범위에 있는 정수이다. 기본값은 10이다.(십진수)
반환 값
: 지정된 숫자 값을 나타내는 문자열
예외
RangeError : radix가 2보다 작거나 36보다 큰 경우 발생.
예시)
const count = 10;
console.log(count.toString()); // "10"
console.log((17).toString()); // "17"
console.log((17.2).toString()); // "17.2"
const x = 6;
console.log(x.toString(2)); // "110"
console.log((254).toString(16)); // "fe"
console.log((-10).toString(2)); // "-1010"
console.log((-0xff).toString(2)); // "-11111111"
숫자 문자열의 기수 변환(Converting radix of number strings)
: 10진수가 아닌 기수(0~9 ❌)로 숫자를 나타내는 문자열이 있는 경우 parseInt()와 toString()을 사용하여 다른 기수로 변환할 수 있다.
const hex = "CAFEBABE";
const bin = parseInt(hex, 16).toString(2); // "11001010111111101011101010111110"
Number.MAX_SAFE_INTEGER;
// 9007199254740991
: Number.MAX_SAFE_INTEGER 상수는 JavaScript (2**53 – 1)의 최대 안전 정수를 나타낸다.
값
: 9007199254740991(9,007,199,254,740,991, 또는 ~9천조).
=> 더 큰 정수의 경우 BigInt 사용.
▶ Number.parseInt()
Number.parseInt(string)
Number.parseInt(string, radix)
Number.parseInt === parseInt // true
: Number.parseInt() 정적 메서드는 문자열 인수를 구문 분석(parse)하고 지정된 기수 또는 밑의 정수를 반환한다.
매개변수
string : 구문 분석할 값으로 string으로 강제 변환된다. 이 인수의 선행 공백은 무시됨.
radix : 2와 36 사이 기수를 나타내는 정수, radix가 정의되지 않거나 0이면 10으로 간주된다. 숫자가 '0x', '0X'로 시작되면 16으로 간주.
반환 값
: 주어진 string에서 구문 분석된 정수.
radix가 위 범위가 아니거나 첫 번째 문자를 숫자로 변환할 수 없는 경우 NaN 반환됨.
예시)
function roughScale(x, base) {
const parsed = Number.parseInt(x, base);
if (Number.isNaN(parsed)) {
return 0;
}
return parsed * 100;
}
console.log(roughScale(' 0xF', 16));
// Expected output: 1500
console.log(roughScale('321', 2));
// Expected output: 0
- parseInt()와 toString()
+ 이거 정리한 다다음날 만난 문제
[프로그래머스] 3진법 뒤집기
https://school.programmers.co.kr/learn/courses/30/lessons/68935?language=javascript
function solution(n) {
return parseInt(Array.from(n.toString(3)).reverse().join(''), 3);
}
처음 3진법이라고 하면 당황하겠지만 위에 내용을 안다면 간단하게 이렇게 변형해줄 수 있다!
참고 사이트
mdn
🙂 공부하며 정리하는 글입니다. 공감과 피드백 환영합니다.
'프로그래밍 > JavaScript' 카테고리의 다른 글
[JS] A Truthy or Falsy Value in JavaScript (0) | 2023.02.17 |
---|---|
[JS] Hosting 호이스팅이란? / 프로그래머스 구명보트 예시 문제 풀이 (0) | 2023.01.27 |
[JS] reduce index와 함께 효과적으로 쓰기 / 최솟값 만들기 풀이 예시 / ?? 논리 연산자 (1) | 2023.01.22 |
[Js] Array에서 순서 변경하지 않고 특정 값 삭제하기 🧚🏻♀️ / 제일 작은 수 제거하기 (0) | 2023.01.21 |
[Js] 구조 분해 할당(Destructuring assignment)이란? (1) | 2023.01.18 |