为什么这个C表达式会产生错误的答案?

时间:2013-06-19 18:57:32

标签: c math sqrt

我有以下代码:

double e = 36858.767828375385;
double c = 2;
double d = 67.877433500000009;

e = sqrt(e / (c * (c - 1))) / d;

根据调试器,e的结果值为2,但应为2.8284271。我做错了什么?

2 个答案:

答案 0 :(得分:6)

e取值2的原因是因为这是实际答案:

  

sqrt(e /(c *(c-1)))/ d;

     

= sqrt(e /(2 *(2 - 1)))/ d

     

= sqrt(e / 2)/ d

     

= sqrt(36858.767828375385 / 2)/ d

     

= sqrt(18429.383914188)/ d

     

= 135.754867 / d

     

= 135.754867 / 67.877433500000009

     

= 2

也许你的公式错了?

希望这有帮助!

答案 1 :(得分:1)

示例代码:

c = 2;
c = c * (c - 1);

评估将是2 *(2 - 1)=> 2正确(2的实际结果);

是1 *(2 - 1)=> 1错(你的期望为2.8284271);

这就是你的困惑,我想。