[javascript] Infinity와 NaN의 연산 결과 처리 방법

자바스크립트에서는 Infinity(무한대)와 NaN(숫자가 아님)이라는 두 가지 특수한 숫자 값이 있습니다. 이러한 값들과의 연산 결과에 대해 어떻게 처리해야 하는 지에 대해 알아보겠습니다.

Infinity

Infinity는 어떤 수보다도 큰 값으로, 일반적으로 표현할 수 있는 최대값보다 큰 숫자를 나타냅니다. 예를 들어, 1 / 0의 결과는 Infinity입니다.

console.log(1 / 0); // Infinity

NaN

NaN은 “숫자가 아님”을 의미하며, 부동 소수점 연산에서 정의되지 않은 결과를 나타냅니다. 이 때문에 잘못된 숫자 연산이 발생했을 때 NaN이 반환됩니다.

console.log("hello" - 10); // NaN

Infinity 또는 NaN과의 연산

Infinity나 NaN과의 연산은 예상치 못한 결과를 초래할 수 있습니다. 따라서 이러한 값들이 포함된 연산을 수행할 때에는 주의가 필요합니다. 보통 어떤 값을 Infinity 또는 NaN으로 나누거나 곱하거나 더하면 Infinity 또는 NaN이 반환됩니다.

console.log(10 / 0); // Infinity
console.log(10 / Infinity); // 0
console.log(10 / NaN); // NaN

연산 결과가 Infinity 또는 NaN인 경우의 처리 방법

연산 결과가 Infinity 또는 NaN일 때에는 필요에 따라 별도로 처리해야 합니다. 이러한 값들을 다룰 때에는 조건문을 사용하여 적절한 대체값을 지정하거나, 오류를 처리하는 등의 방법을 고려할 수 있습니다.

function divide(a, b) {
  if (b === 0) {
    return "무한대로 나눌 수 없습니다.";
  } else {
    const result = a / b;
    if (isNaN(result)) {
      return "유효하지 않은 숫자입니다.";
    } else {
      return result;
    }
  }
}

console.log(divide(10, 0)); // "무한대로 나눌 수 없습니다."
console.log(divide(10, Infinity)); // 0
console.log(divide(10, "hello")); // "유효하지 않은 숫자입니다."

위와 같이 연산 결과가 Infinity나 NaN인 경우에 대비하여 적절한 처리 방법을 구현하면 프로그램의 안정성을 높일 수 있습니다.

결론

Infinity와 NaN은 숫자 연산의 예외적인 상황을 나타내는 값으로, 이러한 값들과의 연산에 대해 적절한 처리가 필요합니다. 연산 결과가 Infinity나 NaN이 될 수 있는 경우에는 이에 대한 대응책을 사전에 고려하여 안정적인 코드를 작성할 수 있도록 노력해야 합니다.


참고 자료:

  1. MDN Web Docs
  2. MDN Web Docs