1. parseInt()
parseInt() 함수는 문자열 인자를 파싱하여 특정 진수의 정수를 반환합니다.
parseInt(string);
parseInt(string, radix);
- `string` : 파싱할 값입니다. 문자열이 아닐 경우 Tostring 추상 연산을 사용해 문자열로 변환합니다.
- `radix` : (optional) string의 진수를 나타내는 2부터 36까지의 정수입니다.
- 기본 값이 10이 아닙니다
- `Number` 자료형이 아닌 경우 `Number`로 변환합니다.
console.log(parseInt('123'));
// 123 (default base-10)
console.log(parseInt('123', 10));
// 123 (explicitly specify base-10)
console.log(parseInt(' 123 '));
// 123 (whitespace is ignored)
console.log(parseInt('077'));
// 77 (leading zeros are ignored)
console.log(parseInt('1.9'));
// 1 (decimal part is truncated)
console.log(parseInt('ff', 16));
// 255 (lower-case hexadecimal)
console.log(parseInt('0xFF', 16));
// 255 (upper-case hexadecimal with "0x" prefix)
console.log(parseInt('xyz'));
// NaN (input can't be converted to an integer)
2. 주의해야할 점
1. parseInt 의 기본값이 10진수가 아닙니다.
진수 인자로 지정한 값(`radix`)은 (필요한 경우) 숫자로 변환됩니다. 변환 후의 값이 0, `NaN`, `Infinity` 중 하나 (`undefined`는 `NaN`으로 변환)라면 JavaScript는 다음을 가정합니다.
- 입력 값(첫 번째 인수) 즉 파싱할 값이 "0x" 또는 "0X"(숫자 0과 대/소문자 x)로 시작하는 경우 `radix`를 `16`으로 간주하여 나머지 문자열을 16진수로 파싱합니다.
- 입력 값이 그 외의 다른 값으로 시작하면 `radix`는 10(10진수)입니다.
console.log(parseInt('0Xa')); // 10
console.log(parseInt('0Xa', 10)); // 0
console.log(parseInt('0Xa', 0)); // 10
console.log(parseInt('0Xa', NaN)); // 10
console.log(parseInt('0Xa', Infinity)); // 10
2. `radix`가 2~36의 범위를 벗어나는 경우 parseInt가 `NaN`을 반환합니다.
(0, `NaN`, `Infinity`, `undefined` 제외)
console.log(parseInt('36', 39)); // NaN
다음과 같은 경우에는 `NaN`을 반환합니다.
- `radix`가 2보다 작거나 36보다 큰 경우
- 공백이 아닌 첫 문자를 숫자로 변환할 수 없는 경우(단, 양의 부호 `+`와 음의 부호 `-`는 인식합니다.)
3. `NaN` 값은 모든 진수에서 숫자가 아닙니다.
console.log(parseInt(NaN, 2)); // NaN
4. `number.toString(radix)`와 헷갈리면 안됩니다.
`parseInt()`: 문자열 인자를 파싱하여 특정 진수의 정수를 반환
`number.toString(radix)` : 숫자를 특정 진수의 문자열 리터럴로 변환
parseInt("546", 2); // NaN -> 0과 1을 제외한 숫자는 2진법에서 유효하지 않습니다.
console.log(parseInt('a', 16)); // 10
console.log(parseInt('101', 2)); // 5
console.log(parseInt('10', 8)); // 8
console.log((10).toString(16)); // 'a'
console.log((5).toString(2)); // '101'
console.log((8).toString(8)); // '10'
5. parseInt는 `BigInt` 구문을 `Number`로 반환하므로 정확도를 잃습니다.
why? 마지막 n 문자를 무시하기 때문입니다.
console.log(parseInt(4.7 * 1e22, 10)); // 매우 큰 숫자가 4가 됩니다.
parseInt(0.00000000000434, 10); // 매우 작은 숫자가 4가 됩니다.
parseInt("900719925474099267n"); // 900719925474099300
6. parseInt 는 숫자 구분 기호와 함께 사용할 수 없습니다.
parseInt("123_456"); // 123
Reference
'Javascript > 개념' 카테고리의 다른 글
[JS - 개념] 원시타입(Primitive Type)과 객체 타입(Object/Reference Type) (1) | 2023.11.12 |
---|---|
[JS - 개념] 재귀함수와 증감연산자를 사용할 때 주의점 (1) | 2023.10.15 |
[JS - 개념] Sort() <배열 고차함수> (0) | 2023.05.26 |
[JS - 개념] String.prototype.replace() (0) | 2023.01.31 |
[JS - 개념] 식별자 네이밍 규칙 (0) | 2022.10.13 |