判断浮点型是否为整形,这样可以吗?
我在网上找了一下,网上的牛人都是用下面这样判断的,我自己也写也一个,好像很简单,似乎也可以判断,就是不知道有什么问题,请高手指教一下!!!!!!!!
bool DoubleIsInt(double n)
{
__int64 i, a=*(__int64*)&n, e=(a>>52&2047)-1023, t=a&0xFFFFFFFFFFFFFll;
if (n>=-1e-16F && n<=1e-16F) return true; //1e-16:判断是否为0时允许的误差
if (e<0) return false;
for (i=0x8000000000000ll; i; i>>=1)
if (i>>e&t) return false;
return true;
}
bool FloatIsInt(float n)
{
int i, a=*(int*)&n, e=(a>>23&255)-127, t=a&8388607;
if (n>=-1e-6F && n<=1e-6F) return true; //1e-6:判断是否为0时允许的误差
if (e<0) return false;
for (i=0x400000; i; i>>=1)
if (i>>e&t) return false;
return true;
}
///自己写的实现,高手指教
bool FloatIsInt(float n)
{
int k=(int)n;
if(n -k ==0 )
return true;
return false;
}