刚才那个不对
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;
}