双精度商?

Mic*_*l M 1 c++ windows precision double int

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

考虑代码片段(假设在一个程序中,所有变量都是合法定义的):

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 );
Run Code Online (Sandbox Code Playgroud)

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

因此,选择是always,neversometimes.我选择的是never由于支架在这种情况下是如何工作的,但我老师说的是sometimes.我有点失落,所以我希望有人可以解释一下.

Tay*_*ols 5

由于(num1 / num2)被加括号,并且两个num1num2是整数,它会导致整数除法,其中丢弃的小数部分.如果表达式已经存在(double) num1 / num2,num1则会先进行加倍,结果将始终精确到多个小数点.

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

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