Asumiendo ints de 32 bits y 4 y 8 bytes IEEE-754 flotadores/dobles sería:
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)
Tenga en cuenta que int tiene 32 bits de precisión, el flotador tiene 23 bits, el doble tiene 52.