This code works (C# 3)
double d; if(d == (double)(int)d) ...;
Could you use this
bool IsInt(double x) { try { int y = Int16.Parse(x.ToString()); return true; } catch { return false; } }