공부/C++

Nan(Not A Number)란?

셩잇님 2023. 6. 12. 01:58
반응형

 

 

1. Nan이란?

'숫자가 아님'의 약자인 NaN은 컴퓨팅 및 프로그래밍에서 정의되지 않았거나 표현할 수 없는 숫자 연산 결과를 나타내기 위해 사용되는 특수 값입니다. NaN 값은 부동 소수점 산술이나 오류, 유효하지 않은 결과를 나타내는 데 사용됩니다. 

NaN은 수학적으로 연산이나 계산에서 정의되지 않았거나 수치로 표현할 수 없는 결과가 나올 때 이를 나타내는 데 사용됩니다. 이는 결과가 의미가 없거나 유효하지 않다는 신호로 사용됩니다. 예를 들어, 0을 0으로 나누거나 음수의 제곱근을 구하면 이러한 연산에는 잘 정의된 수치 결과가 없기 때문에 NaN이 생성됩니다.

2. Nan의 발생 원인
잘못된 산술 연산: 0으로 나누기, 음수의 제곱근 구하기, 양수가 아닌 숫자의 로그를 구하면 모두 NaN이 될 수 있습니다.

불확정 형식: 0/0 또는 ∞ - ∞와 같이 잘 정의되지 않은 특정 수학 표현식이나 극한은 NaN을 산출합니다.

오류 조건: 일부 프로그래밍 언어와 라이브러리에서는 NaN을 사용하여 잘못된 입력이나 오버플로/언더플로와 같은 오류 또는 예외적인 조건을 표시합니다.

 

3. Nan의 특징
NaN에는 예외적이거나 정의되지 않은 결과를 처리하는 데 유용한 몇 가지 고유한 속성이 있습니다:

NaN은 전파됩니다: 수학 연산에 NaN 값이 사용되면 결과는 NaN이 됩니다. 이 속성을 사용하면 일련의 계산을 통해 NaN이 전파되어 NaN 값을 기반으로 하는 후속 계산에서도 NaN이 생성되도록 할 수 있습니다.

NaN 비교: NaN 값을 다른 NaN을 포함한 다른 값과 비교하면 항상 거짓이 산출됩니다. 이 속성은 조건문이나 비교에서 NaN 값을 식별하고 처리하는 데 사용됩니다.

NaN 고유성: NaN 값은 서로 같지 않습니다. 즉, NaN 값이 여러 개 존재할 수 있지만 서로 다른 것으로 간주됩니다.

 

4. Nan의 처리
프로그래머는 프로그래밍 언어에서 제공하는 특수 함수나 구조체(예: JavaScript의 isNaN() 또는 C++의 std::isnan())를 사용하여 NaN을 확인할 수 있습니다. 이러한 함수를 사용하면 NaN 값을 부울 값으로 반환하여 프로그래머는 명시적으로 식별하고 처리할 수 있습니다. 또 다른 방법은 오류가 발생했을 때 예외를 던지는 것입니다.

 

 

 

반응형

'공부 > C++' 카테고리의 다른 글

반복자(iterator)란?  (0) 2023.06.12
전방선언(Forward Declaration)이란?  (0) 2023.06.12
L-Value와 R-Vaule란?  (0) 2023.06.11
Boost 라이브러리란?  (0) 2023.06.10
표준 템플릿 라이브러리(STL: Standard Template Library)란?  (0) 2023.04.06