これは基本的な質問です。答えは「はい」です(int = 32ビット、double = 53ビット仮数+符号ビット)。
基本的に火を主張することができますか?
int x = get_random_int();
double dx = x;
int x1 = (int) dx;
assert(x1 ==x);
if (INT_MAX-10>x)
{
dx+=10;
int x2=(int) dx;
assert(x+10 == x2);
}
明らかに、除算などの複雑な式を含むもの((int)(5.0 / 3 * 3)は5/3 * 3と同じではありません)は機能しませんが、変換と加算/減算を行うのだろうか(オーバーフローが発生しない場合)同等性を維持します。