代碼中,第一個函數表示判斷無窮大,第二個函數表示判斷無效值
typedef unsigned long ul;
bool isINF( float f )
{
ul x = *(ul*)&f;
return 0==(x&0x7ffffful) && 0x7f800000ul==(x&0x7f800000ul);
}
bool isNaN( float f )
{
ul x = *(ul*)&f;
return 0!=(x&0x7ffffful) && 0x7f800000ul==(x&0x7f800000ul);
}