Mic*_*l M 1 c++ windows precision double int
我在前几天的测验中遇到了以下问题.
考虑代码片段(假设在一个程序中,所有变量都是合法定义的):
Run Code Online (Sandbox Code Playgroud)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 );在赋值语句后变量answer,将保持最精确的商,精确到小数点右边的几位数......
因此,选择是always,never和sometimes.我选择的是never由于支架在这种情况下是如何工作的,但我老师说的是sometimes.我有点失落,所以我希望有人可以解释一下.
由于(num1 / num2)被加括号,并且两个num1和num2是整数,它会导致整数除法,其中丢弃的小数部分.如果表达式已经存在(double) num1 / num2,num1则会先进行加倍,结果将始终精确到多个小数点.
结果准确的示例:(double) (4 / 2)与...相同(double) (2)
结果不准确的示例:(double) (3 / 2)与...相同(double) (1)