c + + 의 float (NaN)
오늘 함정 을 밟 은 거 야.값 이 - nan (0x 400000) 인 crash 에 부 딪 혔 습 니 다.
구 글 이 수확 한 것 은:
http://stackoverflow.com/questions/570669/checking-if-a-double-or-float-is-nan-in-c
for a float f, f != f will be true only if f is NaN.
float 형식 변수 f, f! =f 는 f 가 NaN 일 때 만 성립 된다.
float 가 유효 치 인지 아 닌 지 를 판단 하려 면 f = = f 가 더 있어 야 할 것 같 습 니 다.
코드 직접 보기:
#include int main(){ unsigned int i = 0x400000; float f = 0.0f; printf("{f:%f,i:%u}",f,i); *((unsigned int *)&f)=i; printf("{f:%f,i:%u}",f,i); f = 0.0f/0.0f; if(f != f) printf("f != f,%f,%u",f,*((unsigned int *)&f)); if(f > 0.0f || f == 0.0f || f < 0.0f) printf(" f > 0.0f || f == 0.0f || f < 0.0f)"); else printf("cool!"); return 0;}
c + + 의 nan 을 어떻게 내 는 지 보충 해 주세요.
#include
#include
void foo( double a, double b )
{
assert( a != b );
}
int main()
{
typedef std::numeric_limits<double> Info;
double const nan1 = Info::quiet_NaN();
double const nan2 = Info::quiet_NaN();
foo( nan1, nan2 );
}
물고기 가 물고기 가 아니 구나.
다음으로 전송:https://www.cnblogs.com/linbc/archive/2013/01/18/2866276.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.