双精度商?

时间:2018-07-12 00:13:27

标签: c++ windows int double precision

前几天我在测验中遇到了以下问题。

  

考虑代码片段(假定位于合法定义了所有变量的程序中):

int num1, num2;
double answer;

// program gets num1 and num2 from user, and values received
// are always non-zero ints between -100 and +100 (code not shown)

...

// compute precise quotient:
answer = (double) ( num1 / num2 );
     

赋值语句后的变量答案将保持最精确的商,精确到小数点右边的几位数...

因此,选择为alwaysneversometimes。由于括号在这种情况下的工作原理,我选择了never,但是我的老师说的是sometimes。我有点迷茫,所以我希望有人能解释一下。

1 个答案:

答案 0 :(得分:5)

由于(num1 / num2)被加上括号,并且num1num2都是整数,因此将导致整数除法,从而丢弃小数部分。如果表达式为(double) num1 / num2,则num1将被强制转换为双精度优先,并且结果将始终精确到多个小数点。

一个结果准确的示例:(double) (4 / 2)(double) (2)相同

一个结果不准确的示例:(double) (3 / 2)(double) (1)相同