代码中,第一个函数表示判断无穷大,第二个函数表示判断无效值
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); }