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

Ati*_*rag 0 c math sqrt

我有以下代码:

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

e = sqrt(e / (c * (c - 1))) / d;
Run Code Online (Sandbox Code Playgroud)

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

tem*_*def 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

也许你有错误的公式?

希望这可以帮助!