IT

C / C ++ NaN 상수 (리터럴)?

lottoking 2020. 8. 19. 18:52
반응형

C / C ++ NaN 상수 (리터럴)?


또는 C / C ++에서 를 할당 할 NaN있습니까? JavaScript에서와 마침 : . 나중에 변수가 숫자인지 아닌지 확인할 수 있습니다.doublefloata = NaN


C에서 NAN의 선언 <math.h>.

C ++에서 std::numeric_limits<double>::quiet_NaN()선언한다 <limits>.

그러나 값이 NaN인지 확인하기 위해 다른 NaN 값과 가치 없습니다. 대신 사용 isnan()에서 <math.h>, 또는 C std::isnan()에서 <cmath>C ++한다.


std::numeric_limits<double>::quiet_NaN()내가 cppreference.com 문서를 선호한다고 말해야하지만 다른 사람들이 당신이 찾고 있다고 지적했듯이 . 특히이 관련이 약간 모호하기 때문에 :

std :: numeric_limits :: has_quiet_NaN == true 인 경우에만 의미가 있습니다.

이 사이트의 섹션을 확인하면 이것이 사이트에서 의미하는 바를 쉽게 확인할 수 있습니다 .std::numeric_limits::has_quiet_NaN

이 상수는 모든 부동 소수점 유형에 의미가 있으며 std :: numeric_limits :: is_iec559 == true이면 true가 보장됩니다.

같은 설명 이는 여기 경우 true수단 플랫폼이 지원하는 IEEE 754표준입니다. 이전에는 대부분의 상황에서 이것이 사실입니다.


이는 C ++에서 numeric_limits를 사용하여 수행 할 수 있습니다.

http://www.cplusplus.com/reference/limits/numeric_limits/

다음은 아마도보고 싶은 방법입니다.

infinity()  T   Representation of positive infinity, if available.
quiet_NaN() T   Representation of quiet (non-signaling) "Not-a-Number", if available.
signaling_NaN() T   Representation of signaling "Not-a-Number", if available.

일반적으로 프로그램에 잘못된 번호를 사용하는 것은 좋지 않습니다. 나중에 제거하기가 매우 어려운 상황에서 프로그램이 중단 될 수 있습니다.

다음은 필요한 번호를 할당하지 않고 있고 좋은 방법 목록입니다. https://studiofreya.com/cpp/1-inf-1-ind-and-qnan-floating-point-numbers-and-errors/#Capturing-오류

요컨대 세 가지가 있습니다.

  • 비교
  • C ++ 11 표준 사용
  • 제어 단어 _controlfp 및 _control87 사용

참고 URL : https://stackoverflow.com/questions/16691207/cc-nan-constant-literal

반응형