Number 객체는 숫자와 관련된 다양한 작업을 수행하기 위해 메서드와 속성을 제공한다. 오늘은 Number 객체와 그에 속하는 자주 사용되는 메서드에 대해 간단하게 알아보는 시간을 가져보자.
1. Number() 생성자 함수
예제 코드
let num = Number(29);
위의 예제는 숫자 리터럴 29를 Number 함수를 사용하여 Number 객체로 변환한 다음, 변수 num에 할당하는 것을 의미한다. 그러나 주의할 점은 대부분의 경우 JavaScript는 자동 형 변환을 수행하므로 숫자를 변환하지 않고도 숫자 값을 변수에 직접 할당할 수 있다.
2. toString() 메서드
예제 코드
let num = 29;
let str = num.toString(); // "29"
- let num = 42;는 변수 num을 선언하고 정수 값 29를 할당한다. num은 현재 숫자 데이터 타입을 가지고 있다.
- let str = num.toString();은 num 변수의 값을 문자열로 변환하고 그 결과를 str 변수에 할당한다.
toString() 메서드를 사용하여 숫자 데이터를 문자열 데이터로 변환할 수 있다.
3. toFixed() 메서드
예제 코드
let num = 3.14159;
let str = num.toFixed(2); // "3.14"
부동 소수점 숫자를 문자열로 변환하고 해당 문자열을 소수점 이하 몇 자리까지 유지할지 지정하는 예제이다. toFixed() 메서드의 매개변수로 몇 자리까지 지정할지에 대한 숫자를 넣어주면 된다.
4. parseInt() 함수
예제 코드
let str = "29";
let num = parseInt(str); // 29
parseInt() 함수는 문자열을 정수로 변환하는 데 사용되며, 문자열에서 숫자를 추출하여 정수 값을 만든다. 문자열의 첫 번째 자리부터 시작하며, 숫자가 아닌 문자를 만나면 변환을 중지한다. 따라서 "29"와 같은 문자열은 29로 변환하고 "29 abc"와 같은 문자열은 29까지로만 숫자로 변환되고 나머지 "abc" 부분은 무시하게 된다.
- "29" → 20
- "29abc" → 29
- "abc29" → NaN(만약 문자열의 시작 부분에 숫자가 나타나지 않으면, parseInt()는 NaN(숫자가 아님)을 반환한다.
- "2a9bc" → 2
그렇다면 여기서 필자는 Number() 생성자와 parseInt() 함수로 문자열에서 숫자로 변환하는 게 무슨 차이가 있는지 궁금증이 생겼다. 그래서 더 알아본 결과 다음과 같은 차이가 있었다.
Number()와 parseInt()의 차이
Number() 생성자 | parseInt() 함수 |
Number() 생성자는 매개변수로 주어진 문자열 전체를 숫자로 반환하려고 한다. 예를 들어, "29"와 같은 문자열이 주어지면 숫자 29로 반환을 하지만 "29abc"와 같이 들어오면 NaN을 반환한다. | parseInt() 함수는 매개변수로 주어진 문자열의 첫 번째 자리부터 변환을 시작하고 만약에 숫자가 외의 다른 문자를 만날 경우 반환을 종료한다. 예를 들어 "29"는 29로 변환하고, "29abc"는 29까지 숫자로 반환하고 나머지 "abc" 부분은 무시한다. |
5. parseFloat() 함수
예제 코드
let str = "3.14";
let num = parseFloat(str); // 3.14
parseFloat() 함수는 문자열을 부동 소수점 숫자로 변환하는 데 사용된다. 문자열을 처음부터 파싱 하며 유효한 부동 소수점 숫자의 일부가 아닌 문자를 만날 때까지 파싱 한다. 문자열의 끝이나 숫자의 일부가 아닌 문자(예 : 공백 또는 문자)에 도달하면 구문 분석이 중지된다.
6. isNaN() 함수
예제 코드
let result = isNaN("Hello"); // true
isNaN 함수는 주어진 값이 NaN(숫자가 아님)인지 여부를 확인하는 함수이다. NaN은 숫자가 아닌 값을 나타내며 JavaScript에서 계산 중에 잘못된 숫자 연산의 결과로 발생할 수 있다.
결과적으로 result 변수는 true 값을 가지게 된다. 이것은 주어진 문자열 "Hello"가 NaN이라는 것을 나타내며, 숫자로 변환할 수 없다는 것을 의미한다.
Number 객체의 NaN 속성
예제 코드
let nan = Number.NaN; // NaN
JavaScript에서 내장된 특별한 값으로, NaN값을 직접 저장하고 싶을 때 사용된다.
7. isFinite() 함수
예제 코드 - 유한한 숫자
let result = isFinite(29); // true
isFinite() 함수를 사용하여 숫자가 유한한(finite) 숫자인지 여부를 확인하는 예제이다. isFinite() 함수는 인수로 전달된 값을 평가하고, 그 값이 유한한 숫자인 경우 true를 반환하며, 무한대 또는 NaN(Not-a-Number)인 경우 false를 반환한다.
결과적으로, result 변수는 true 값을 가지게 된다. 이것은 숫자 29가 유한한 숫자이며 무한대나 NaN이 아니라는 것을 나타낸다.
예제 코드 - 무한한 숫자
let n = isFinite(Infinity); // false
let m = isFinite(-Infinity); // false
isFinite() 함수에 매개변수로 Infinity(무한한 양의 값)와 -Infinity(무한한 음의 숫자)을 넣을 경우 유한한 숫자가 아니기 때문에 false를 반환하게 된다.
9. MAX_VALUE 및 MIN_VALUE 속성
예제 코드 - MAX_VALUE
let max = Number.MAX_VALUE; // 1.7976931348623157e+308
let min = Number.MIN_VALUE; // 5e-324
JavaScript에서 사용 가능한 숫자의 최댓값과 최솟값을 나타내는 값을 변수에 할당하는 예제이다. 최댓값과 최솟값은 IEEE 745 표준에 따라 결정되며 이러한 값들은 JavaScript에서 숫자를 다룰 때 유용하게 활용된다. Number.MAX_VALUE와 Number.MIN_VALUE를 사용하면 계산 중에 숫자가 범위를 벗어나는지 확인할 수 있다.
10. toPrecision() 메서드
예제 코드 - 소수점
let num = 123.456789;
let str = num.toPrecision(4); // "123.5"
숫자를 지정된 유효 숫자(유효 자릿수)로 형식화하는 방법을 보여주는 예제이다. toPrecision(4)는 숫자를 네 개의 유효 숫자로 형식화하라는 것을 나타낸다. 여기서 "유효 숫자"는 숫자에서 소수점 이하의 숫자를 포함한 총 숫자 자릿수를 의미한다. 결과적으로 123.456789를 네 개의 유효 숫자로 형식화하면 123.5가 된다. 이것은 원래 숫자를 소수점 이하 네 자릿수로 반올림한 결과를 나타낸다.
예제 코드 - 정수
let numAsString = "123456";
let formattedStr = Number(numAsString).toPrecision(4); // 123500
정수형 숫자에 toPrecision() 메서드를 사용할 경우 자릿수게 맞게 숫자가 반올림되며 나머지 비유효한 자릿수는 0으로 설정된다.
읽어주셔서 감사합니다.