JavaScript에서 숫자 다루기, number 타입
JavaScript에서 숫자는 number 타입 하나로 관리됩니다. 정수와 실수의 구분 없이 하나의 데이터 타입으로 표현되며, 이를 유연하게 활용하는 것이 중요합니다. 이 글에서는 number 타입의 특징과 연산, 정밀도 문제, 숫자 변환, 특수 값, 활용법까지 상세히 살펴보겠습니다.
목차
- JavaScript의 number 타입이란?
- 기본 연산과 사용법
- 정밀도 문제와 해결 방법
- 문자열과 숫자 변환
- NaN, Infinity, -Infinity
- BigInt: 정수를 다루는 새로운 방법
- 실전 활용 사례
JavaScript의 number 타입이란?
JavaScript의 number
타입은 IEEE 754 64비트 부동소수점 형식을 사용하여 숫자를 저장합니다. 이는 다음과 같은 특징을 가집니다.
- 정수와 실수를 같은 타입으로 다룸
- 큰 수와 작은 수를 표현 가능 (약 ±1.8 × 10308)
- 부동소수점 연산의 정밀도 문제 존재
예제:
console.log(typeof 42); // "number"
console.log(typeof 3.14); // "number"
기본 연산과 사용법
JavaScript에서는 기본적인 사칙연산이 가능합니다.
연산자 | 설명 | 예제 |
---|---|---|
+ | 덧셈 | 5 + 3 // 8 |
- | 뺄셈 | 9 - 4 // 5 |
* | 곱셈 | 7 * 2 // 14 |
/ | 나눗셈 | 10 / 2 // 5 |
% | 나머지 | 10 % 3 // 1 |
정밀도 문제와 해결 방법
JavaScript의 부동소수점 방식은 정밀도 문제를 일으킬 수 있습니다.
예제:
console.log(0.1 + 0.2); // 0.30000000000000004
해결 방법:
toFixed()
메서드 사용- 정수 연산 후 다시 변환
문자열과 숫자 변환
JavaScript에서는 문자열과 숫자 간 변환이 필요할 때가 많습니다.
- 문자열 → 숫자 변환:
parseInt()
,parseFloat()
,Number()
- 숫자 → 문자열 변환:
toString()
NaN, Infinity, -Infinity
특수한 숫자 값들이 존재하며, 이를 이해하는 것이 중요합니다.
- NaN (Not a Number): 숫자가 아닌 연산 결과
- Infinity: 무한대를 나타냄
- -Infinity: 음의 무한대
BigInt: 정수를 다루는 새로운 방법
ES11(ES2020)부터 BigInt 타입이 추가되어, 매우 큰 정수를 정확하게 다룰 수 있습니다.
const big = 9007199254740991n; // BigInt 선언
console.log(big + 1n); // 9007199254740992n
실전 활용 사례
JavaScript의 number 타입은 다양한 분야에서 활용됩니다. 특히 금융 계산, 데이터 분석, 웹 애플리케이션 개발 등에서 숫자 처리의 정확성과 성능을 고려해야 합니다. 여기서는 정밀한 연산이 필요한 금융 시스템, 빅데이터를 다루는 데이터 분석, 사용자 입력을 처리하는 웹 애플리케이션에서 number 타입이 어떻게 활용되는지 살펴보겠습니다.
1. 금융 및 통화 연산에서 정밀도를 고려한 숫자 처리
금융 시스템에서는 숫자의 정밀도가 매우 중요합니다. JavaScript의 number
타입은 부동소수점 방식을 사용하기 때문에, 단순한 소수 연산도 정밀도 문제가 발생할 수 있습니다.
문제점:
console.log(0.1 + 0.2); // 0.30000000000000004
위와 같이 0.1과 0.2를 더하면 0.3이 아닌 0.30000000000000004
가 반환됩니다. 금융 연산에서는 이러한 미세한 오차가 큰 문제를 일으킬 수 있습니다.
해결 방법:
toFixed()
메서드를 사용하여 소수점 이하 자릿수를 조절- 정수를 사용한 후 다시 나누는 방식 적용
- 라이브러리(BigNumber.js 등) 활용
예제: 정수 연산 후 변환
const amount = (0.1 * 100) + (0.2 * 100); // 10 + 20 = 30
console.log(amount / 100); // 0.3
2. 데이터 분석에서 대형 숫자(BigInt) 처리
데이터 분석에서는 종종 매우 큰 정수를 다뤄야 합니다. 예를 들어, 통계 데이터를 집계하거나 암호화된 값을 다룰 때 기존 number 타입으로는 정확한 표현이 어려울 수 있습니다.
문제점:
console.log(9007199254740991 + 1); // 9007199254740992 (정확하지만, 그 이상은 오류 발생)
console.log(9007199254740991 + 2); // 9007199254740992 (정확하지 않음)
위와 같이 JavaScript의 최대 안전 정수(Number.MAX_SAFE_INTEGER
)를 초과하면 부정확한 값이 반환됩니다.
해결 방법:
- BigInt 타입을 활용하여 큰 정수 연산 수행
- 정밀도가 필요한 경우 외부 라이브러리 사용
예제: BigInt를 활용한 안전한 정수 연산
const bigNumber = 9007199254740991n; // 'n'을 붙여 BigInt 선언
console.log(bigNumber + 2n); // 9007199254740993n
3. 웹 애플리케이션에서 숫자 변환 및 검증
웹 애플리케이션에서는 사용자의 입력을 처리할 때, 숫자 변환과 검증이 필수적입니다. 예를 들어, 사용자가 입력한 값이 숫자인지 확인하거나, 숫자 연산을 수행해야 할 때 주의해야 합니다.
문제점:
- 사용자의 입력이 문자열로 처리되는 경우
- 잘못된 입력을 숫자로 변환할 때 NaN 발생
해결 방법:
parseInt()
또는parseFloat()
를 사용하여 숫자로 변환isNaN()
를 사용하여 유효한 숫자인지 확인
예제: 사용자 입력을 숫자로 변환
const userInput = "123.45";
const numberValue = parseFloat(userInput);
if (!isNaN(numberValue)) {
console.log("올바른 숫자입니다:", numberValue);
} else {
console.log("잘못된 입력입니다.");
}
결론
JavaScript의 number 타입은 다양한 환경에서 활용됩니다. 금융 시스템에서는 정밀한 연산을, 데이터 분석에서는 BigInt를, 웹 애플리케이션에서는 숫자 변환 및 검증을 신중하게 처리해야 합니다. 이러한 개념을 이해하고 적절한 방법을 적용하면 보다 안전한 숫자 처리가 가능합니다.
'프로그래밍 언어 > 자바스크립트' 카테고리의 다른 글
JavaScript BigInt, 정수 한계를 넘어선 대형 숫자 처리 (0) | 2025.03.07 |
---|---|
JavaScript undefined 디버깅, 예상치 못한 동작 해결하기 (0) | 2025.03.01 |
boolean 값으로 JavaScript 프로그램 로직 제어하기 (0) | 2025.02.17 |
JavaScript에서 null 체크하는 방법과 활용 사례 (0) | 2025.02.11 |
undefined 오류를 피하는 JavaScript 코드 작성법 (0) | 2025.02.05 |