我有一个很奇怪的问题,一段时间以来一直让我疯狂。我的一部分代码需要C++使用math.h来计算一些简单的算术,但它正在吐出完全不正确的值!下面是代码的这一部分:Math.h无法正常工作?
for(int i = 0; i < data.size(); i++) {
cout << (data[i][8]/dp)/2 << " : " << -log(tan(acos(data[i][8]/dp)/2)) << endl;
}
其给出以下输出:
0.5 : inf
0.5 : inf
-0.5 : -37.3319
0.5 : inf
-0.5 : -37.3319
0.5 : inf
0.5 : inf
-0.5 : -37.3319
-0.5 : -37.3319
-0.5 : -37.3319
0.5 : inf
-0.5 : -37.3319
-0.5 : -37.3319
0.5 : inf
0.5 : inf
-0.5 : -37.3319
-0.5 : -37.3319
0.5 : inf
0.5 : inf
0.5 : inf
0.5 : inf
-0.5 : -37.3319
-0.5 : -37.3319
-0.5 : -37.3319
-0.5 : -37.3319
0.5 : inf
-0.5 : -37.3319
0.5 : inf
-0.5 : -37.3319
-0.5 : -37.3319
-0.5 : -37.3319
0.5 : inf
-0.5 : -37.3319
0.5 : inf
-0.5 : -37.3319
-0.5 : -37.3319
-0.5 : -37.3319
0.5 : inf
-0.5 : -37.3319
-0.5 : -37.3319
0.5 : inf
0.5 : inf
-0.5 : -37.3319
0.5 : inf
0.5 : inf
这当然,是完全错误的,堵塞0.5或-0.5到-ln(TAN(阿科斯( ))在任何计算器给你-0.54和-.54 + 3.14i,而math.h不知何故返回inf和-37。有没有人对此有何看法?提前致谢!
哪些数据类型包含在数组'data'中?如果它是整数,则可能需要添加一些演员阵容来加倍。 https://stackoverflow.com/questions/7571326/why-cant-i-return-a-double-from-two-ints-being-divided – mittmemo
数组数据[] []中充满双打,变量dp也是double类型的。 :/ – khfrekek