개발/Javascript

[자바스크립트 시리즈] javascript 숫자 자료구조 및 내장함수

ITIbiza 2024. 7. 28. 00:49

자바스크립트

본론에 앞서

안녕하세요! 이글에서 자바스크립트 시리즈 - javascript 숫자 자료구고 및 내장함수 예제 알아보겠습니다.

 

자바스크립트(javascript) 숫자형 데이터 자료구조는 모든 종류의 수학적 연산을 수행할 수 있는 중요한 데이터 타입입니다.

숫자형 데이터 타입은 웹/앱, 게임 개발, 데이터 분석 등 다양한 분야에서 필수적으로 사용하는 자료구조입니다.

 

특히, 자바스크립트에서 숫자형 타입은 단일 숫자 타입으로, 정수와, 부동 소수점을 모두 포함합니다.

 

이 글에서 자바스크립트 숫자 자료구조 및 내장함수에 대해서 자세히 알아보겠습니다.

 

 

2024.07.26 - [개발/javascript] - [자바스크립트 시리즈] javascript 함수 스코프 이해하기

 

[자바스크립트 시리즈] javascript 함수 스코프 이해하기

본론에 앞서안녕하세요! 이글에서 자바스크립트 시리즈 - javascript 스코프의 개념과 예제 알아보겠습니다. 자바스크립트(javascript)는 동적 인터프리터 프로그래밍 언어이기 때문에 다른 전통적

itibiza.tistory.com

 


 

자바스크립트 숫자형?

기본 숫자 타입

자바스크립트의 기본 숫자 타입은 IEEE 754 표준을 따르는 64비트 부동 소수점 형식을 사용합니다.

그래서 누군가가 자바스크립트 기본숫자 타입에 대해 물어본다면?

 

"자바스크립트에서 숫자는 64비트 부동 소수점 형식"이라고 대답하면 됩니다!

 

자바스크립트는 숫자를 나타내는 2 가지 자료형을 지원합니다.

  1. 정수 리터럴: 정수 리터럴은 소수점 없이 숫자를 표현하는 방법입니다. 예: '42', '0', '-5' 형식으로 소수점 없이 숫자를 표현할 수 있습니다.
  2. 부동 소수점 리터럴: 부동 소수점 리터럴은 소수점을 포함하여 숫자를 표현합니다. 예: '3.14', '-0.001', '2.5e3' 형식으로 소수점을 표현할 수 있습니다.

 

비트

 

 

자바스크립트 숫자 내장함수

1. Math.abs()

Math.abs() 메서드는 주어진 숫자의 절댓값을 반환합니다. 절댓값은 숫자의 부호를 제거한 값입니다.

예를 들어, Math.abs(-7)은 7을 반환합니다.

이는 음수 값을 양수로 변환하거나, 양수 값을 그대로 반환할 때 유용합니다.

console.log(Math.abs(-7)); // 출력: 7
console.log(Math.abs(4)); // 출력: 4

 

2. Math.ceil()와 Math.floor()

Math.ceil() 메서드는 주어진 숫자보다 크거나 같은 가장 작은 정수를 반환합니다.

Math.ceil() 함수는 웹/앱에서 페이지네이션 값을 구할 때 많이 사용됩니다.

반대로, Math.floor() 메서드는 주어진 숫자보다 작거나 같은 가장 큰 정수를 반환합니다.

console.log(Math.ceil(4.2)); // 출력: 5
console.log(Math.floor(4.2)); // 출력: 4

 

3. Math.max()와 Math.min()

Math.max() 메서드는 주어진 숫자들 중 가장 큰 값을 반환하고,

Math.min() 메서드는 가장 작은 값을 반환합니다.

여러 숫자들 중 최대값이나 최솟값을 구할 때 유용합니다.

console.log(Math.max(1, 2, 3)); // 출력: 3
console.log(Math.min(1, 2, 3)); // 출력: 1

 

4. Math.random()

Math.random() 메서드는 0과 1 사이의 난수를 반환합니다.

이는 게임 개발이나 추첨 서비스나 임의의 숫자를 생성할 때 유용합니다.

특정 범위의 난수를 생성하려면 적절한 수학적 조작이 필요하며 무작위 수가 필요한 상황에서 유용합니다..

console.log(Math.random()); // 0과 1 사이의 난수 출력
// 1부터 10 사이의 난수 생성
console.log(Math.floor(Math.random() * 10) + 1);

 

5. Math.round()와 Math.trunk()

Math.round() 메서드는 자바스크립트에서 많이 사용되는 메서드이며 주어진 숫자를 반올림하고, Math.trunk() 메서드는 소수점이하를 버립니다.

console.log(Math.round(4.5)); // 출력: 5
console.log(Math.trunc(4.5)); // 출력: 4

 

number

숫자형 자료구조에 주요 메서드

1. Number.isNaN()

Number.isNaN() 메서드는 주어진 값이 NaN인지 확인합니다.

NaN(Not a Number)은 수학적 연산이 실패했을 때 발생하는 특수 값입니다.

isNaN() 메서드는 값이 NaN이면 true 아니면 false를 반환합니다.

console.log(Number.isNaN(NaN)); // 출력: true
console.log(Number.isNaN(123)); // 출력: false
console.log(Number.isNaN('Hello')); // 출력: false

 

2. Number.parseInt(), Number.parseFloat()

Number.parseInt() 메서드는 자주 사용되는 메서드이며 문자열을 정수로 변환하고, Number.parseFloat() 메서드는 문자열을 부동 소수점 숫자로 변환합니다.

숫자로 변환할 수 없는 경우 NaN을 반환합니다.

문자열을 정수로 변환이 필요하면 parseInt() 메서드를 사용하고 문자열을 부동 소수점 숫자로 변환이 필요하면 parseFloat() 메서드를 사용하면 됩니다.

console.log(Number.parseInt('42')); // 출력: 42
console.log(Number.parseFloat('3.14'));// 출력: 3.14
console.log(Number.parseInt('Hello'));// 출력: NaN

 

3. Number.toFixed(), Number.toPrecision()

Number.toFixed() 메서드는 주어진 숫자를 고정 소수점 표기법으로 변환합니다.

예를 들어, 5.567.toFixed(2)는 '5.57'을 반환합니다.

즉 toFixed() 메서드는 소수점 자리수를 제거할 때 유용합니다.

Number.toPrecision() 메서드는 주어진 숫자를 지정된 정밀도로 변환합니다.

let num = 5.567;
console.log(num.toFixed(2)); // 출력: '5.57'
console.log(num.toPrecision(3)); // 출력: '5.57'

 

자바스크립트 숫자 자료구조의 한계

자바스크립트에서 숫자 데이터 자료구조는 다른 언어에 비해 유연하고 강력합니다.

하지만 이러한 장점에도 불구하고 몇 가지 중요한 한계가 있습니다.

이 자바스크립트의 숫자 데이터의 한계를 이해하고 적절하게 문제를 해결하는 것은 중요합니다.

 

1. 부동 소수점 정밀도 문제

자바스크립트(JavaScript)의 숫자 타입은 IEEE 754 표준을 따르는 64비트 부동 소수점 형식을 사용합니다.

이로 인해 정밀도 문제와 계산 오류가 발생할 수 있습니다.

특히, 소수점 이하의 자릿수가 많은 경우나 매우 큰 숫자를 다룰 때 이러한 문제가 두드러집니다.

console.log(0.1 + 0.2); // 출력: 0.30000000000000004
console.log(0.1 + 0.2 === 0.3); // 출력: false

위 예시에서 0.1과 0.2를 더한 결과가 0.3 값을 생각했지만 결괏값은 0.30000000000000004가 나오는 것은 부동 소수점 연산의 특성 때문입니다.

숫자 자료구조의 부동 소수점 정밀도에 대한 한계가 있습니다.

부동 소수점 문제는 비일비재하게 일어날수 있으므로 외부 라이브러리를 활용해서 이 문제를 해결할 수 있습니다.

 

2. 숫자 범위 제한

자바스크립트(JavaScript)의 숫자 타입은 안전한 정수 범위가 제한되어 있습니다.

안전한 정수 범위는 -2^53에서 2^53-1까지입니다.

이 범위를 벗어나는 숫자는 정확하게 표현되지 않을 수 있습니다.

console.log(Number.MAX_SAFE_INTEGER); // 출력: 9007199254740991
console.log(Number.MIN_SAFE_INTEGER); // 출력: -9007199254740991
console.log(9007199254740991 + 1); // 출력: 9007199254740992
console.log(9007199254740991 + 2); // 출력: 9007199254740992 (정확하지 않음)

 

3. 비트 연산 한계

자바스크립트(JavaScript)의 비트 연산자는 32비트 정수로 연산을 수행합니다.

따라서 비트 연산을 할 때 32비트를 넘는 숫자는 정확하게 처리되지 않을 수 있습니다.

let bigNumber = 2147483648; // 2^31
console.log(bigNumber >> 1); // 출력: 1073741824 (정확)
bigNumber = 4294967296; // 2^32
console.log(bigNumber >> 1); // 출력: 0 (정확하지 않음)

 

4. 메모리 사용

자바스크립트(JavaScript)의 숫자 데이터는 64비트 부동 소수점 형식으로 저장되기 때문에 메모리 사용량이 많을 수 있습니다.

특히, 많은 양의 데이터를 다룰 때 메모리 사용량이 문제가 될 수 있습니다.

 

5. 성능 문제

개발자라면 필수적으로 고민하고 개선해야되는 성능 문제가 발생할 수 있습니다.

자바스크립트(JavaScript) 엔진의 최적화 수준에 따라 숫자 연산의 성능이 달라질 수 있습니다.

특히, V8 엔진과 같은 고성능 엔진에서는 JIT(Just-In-Time) 컴파일러가 성능을 최적화하지만, 모든 엔진이 동일한 수준의 성능을 제공하지는 않습니다.

 

그렇다면 이 중요한 성능 문제 해결방법은?

숫자 데이터를 다룰 때 성능을 최적화 하려면 반복적인 연사를 최소화하고 필요한 경우 저수준의 비트 연산을 사용할 수 있습니다.

가장 쉬운 방법으로는 최신 자바스크립트(JavaScript) 엔진을 사용하는 것입니다.

[자바스크립트 시리즈] javascript 숫자 자료구조 및 내장함수

 

자바스크립트 숫자 자료구조 및 내장함수 마지막으로?

자바스크립트의 숫자 자료구조는 유연하고 강력합니다.

그래서 자바스크립트의 숫자 내장 함수들은 수학적 연산을 수행하고 숫자를 다루는데 매우 효율적입니다.

 

Math, Number 객체의 다양한 메서드를 활용하면 숫자 데이터를 효율적으로 처리할 수 있습니다.

이러한 함수들을 잘 이해하고 적절하게 사용한다면 코드의 안정성과 성능을 크게 향상시킬 수 있습니다.

 

코드의 안정성과 성능을 향상한다는 것은 즉, 코드 품질이 향상되므로 서비스 유지보수에 큰 도움이 됩니다.

이 글에서 자바스크립트 숫자 자료구조의 개념과 내장함수에 대해서 자세히 알아봤습니다.

 


 

 

필자의 잘못된 부분이나 피드백은 언제든지 댓글로 남겨주세요!

감사합니다^^

 

 

 

https://itibiza.tistory.com/entry/%EB%8F%88-%EC%95%84%EB%81%BC%EB%8A%94-%EB%85%B8%ED%8A%B8%EB%B6%81-%EC%84%B1%EB%8A%A5-%ED%96%A5%EC%83%81-%EA%BF%80%ED%8C%81

 

돈 아끼는 노트북 성능 향상 꿀팁

안녕하세요! ITibiza입니다!얼마 전에 2~3년 정도 쓴 맥북이 상태가 안 좋아서 새로운 맥북으로 교체를 했습니다.역시… 애플은 너무 비싸서……아마도 부들부들 면서 새로운 맥북을 구매했습니다

itibiza.tistory.com