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ビットの精度があり、フロートには23ビット、ダブルには52ビットがあります。