【问题标题】:Double precision quotient?双精度商?
【发布时间】:2018-12-20 02:22:14
【问题描述】:

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

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

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。我有点迷茫,所以我希望有人能解释一下。

【问题讨论】:

  • 假设num1 = 25;num2 = 5;,那么答案将是5.0 ...所以它是:有时。

标签: c++ windows int double precision


【解决方案1】:

由于(num1 / num2)带括号,而且num1num2都是整数,所以会导致整数除法,舍弃小数部分。如果表达式是 (double) num1 / num2num1 将首先转换为 double,结果将始终精确到多个小数点。

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

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

【讨论】:

  • 好的,我现在明白了,出于某种原因,我一直认为 (double) (4 / 2) 会得到 2.0 而不是 2。
  • @Michael:确实如此。但是2.0(double) 2 是一样的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多