不挂科搜题免费

问题:

【论述题】变量dx、dy和dz的声明和初始化如下: double dx = (double)x; d

答案:

由于double的尾数区长度52,再加上1位隐藏位,可以放置完整的32位定点整数,故从int强转为double时可以完全保留精度。 (1) dx*dx >= 0 永真 浮点数相乘,符号位和尾数位分开相乘,尾数用原码表示,笔数是否溢出不影响符号位 (2) (double)(float)x==dx 否 float的尾数区长度23+1,不能完整保留32位int的精度,所以左边为近似值 (3) dx+dy==(double)(x+y) 否 x+y有可能溢出,而dx+dy不会溢出 (4) (dx+dy)+dz==dx+(dy+dz) 永真 因为dz、dy、dz在相加时都能确保精度不丢失 (5) dx*dy*dz==dz*dy*dx 否 在顺序相乘时可能会产生舍入,从而影响后续的乘积结果 (6) dx/dx==dy/dy 否 当dx、dy中有一个为0、另一个不为0时不相等