Assuming 32 bit ints and normal 4 and 8 byte IEEE-754 floats/doubles it would be:
i == (int)(float) i; // possible loss (32 -> 23 -> 32 bits)
i == (int)(double) i; // no loss (32 -> 52 -> 32 bits)
f == (float)(double) f; // no loss (23 -> 52 -> 23 bits)
d == (float) d; // possible loss (52 -> 23 -> 52 bits)
Note that int has 32 bits of precision, float has 23 bits, double has 52.