这是基本问题,我的感觉是答案是肯定的(int = 32 bits,double = 53 bit mantisa + sign bit)。
基本上可以断言火?
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 不同)不起作用,但我想知道转换和加法/减法(如果没有发生溢出)保持对等。