조아마시

쓸모 있는 상세페이지 만들기

웹개발/javascript

[자바스크립트] 숫자

joamashi 2024. 8. 8. 22:00

자바스크립트에서 숫자는 64비트 부동소수점 형식으로 표현됩니다. 이는 매우 큰 수부터 작은 수, 그리고 소수점 아래의 값까지 다양하게 표현할 수 있지만, 정확도에 한계가 있을 수 있습니다.

2진수, 8진수 표현

  • 2진수: 0b 또는 0B로 시작하는 숫자입니다. 예: 0b1010 (10진수 10)
  • 8진수: 0o 또는 0O로 시작하는 숫자입니다. 예: 0o12 (10진수 10)

유용한 Number 메소드

Number.isInteger(number)

  • 주어진 값이 정수인지 판별합니다.
  • true: 정수일 때
  • false: 정수가 아닐 때 (소수, NaN, Infinity 등)
console.log(Number.isInteger(42));    // true
console.log(Number.isInteger(3.14));   // false

Number.isNaN(value)

  • 주어진 값이 NaN(Not a Number)인지 판별합니다.
  • true: NaN일 때
  • false: NaN이 아닐 때
console.log(Number.isNaN(NaN));      // true
console.log(Number.isNaN(undefined)); // false (undefined는 NaN이 아님)

Number.isFinite(number)

  • 주어진 값이 유한한 숫자인지 판별합니다.
  • true: 유한한 숫자일 때
  • false: 무한대(Infinity, -Infinity) 또는 NaN일 때
console.log(Number.isFinite(Infinity)); // false
console.log(Number.isFinite(42));       // true

Number.isSafeInteger(number)

  • 주어진 값이 안전한 정수 범위 내에 있는지 판별합니다.
  • 안전한 정수 범위는 JavaScript에서 정확하게 표현할 수 있는 가장 큰 음의 정수와 가장 작은 양의 정수 사이의 값입니다.
  • true: 안전한 정수 범위 내에 있을 때
  • false: 범위를 벗어나거나 NaN, Infinity일 때
console.log(Number.isSafeInteger(Math.pow(2, 53)));  // true
console.log(Number.isSafeInteger(Math.pow(2, 53) + 1)); // false

Number.EPSILON 프로퍼티

  • JavaScript에서 표현할 수 있는 가장 작은 양의 부동소수점 숫자입니다.
  • 두 부동소수점 숫자의 차이가 EPSILON보다 작으면 거의 같다고 판단할 수 있습니다.
console.log(Number.EPSILON); // 매우 작은 숫자 (약 2.220446049250313e-16)

숫자 관련 추가 정보

  • toFixed(): 소수점 아래 자릿수를 지정하여 문자열로 변환합니다.
  • toPrecision(): 유효 자릿수를 지정하여 문자열로 변환합니다.
  • parseInt(): 문자열을 정수로 변환합니다.
  • parseFloat(): 문자열을 부동소수점 숫자로 변환합니다.
  • Math 객체: 다양한 수학 함수를 제공합니다 (sin, cos, sqrt 등).

실제 사용 예시

// 사용자 입력을 숫자로 변환하고 유효성 검사
const userInput = prompt("숫자를 입력하세요");
const number = Number(userInput);

if (Number.isNaN(number)) {
  console.log("숫자가 아닙니다.");
} else if (!Number.isInteger(number)) {
  console.log("정수가 아닙니다.");
} else if (number > Number.MAX_SAFE_INTEGER || number < Number.MIN_SAFE_INTEGER) {
  console.log("안전한 정수 범위를 벗어났습니다.");
} else {
  console.log("유효한 정수입니다.");
}
728x90