Предполагая, что 32-битные INT и нормальные 4 и 8 байтов IEEE-754 поплавки/удвоение это будет:
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)
Обратите внимание, что int имеет 32 бит точной, Float имеет 23 бита, Double имеет 52.