【发布时间】:2015-06-20 16:31:37
【问题描述】:
我正在计算
使用以下代码。
#define PI 3.14
double ans;
double input1;
void toRad() {
input1 = input1 * PI / 180.0;
}
void sine(void) {
toRad();
ans = input1;
int i = 1;
for (; i < 15; i++) {
if (i % 2 == 0)
ans = ans + (ans * input1 * input1) / 2 * i * (2 * i + 1);
else
ans = ans - (ans * input1 * input1) / 2 * i * (2 * i + 1);
}
printf("%lf", ans);
}
我使用迭代运算而不是 pow 和阶乘函数来获得更精确的值和更多的迭代。
但是,出于某种原因,我得到了不同的输出,例如 -4000000E。这段代码可能有什么问题?
【问题讨论】:
-
问题出在哪里?
-
天哪,忘了问问题,它输出的值如 2400000 这段代码有什么问题
-
为什么
ans是一个全局变量?你不能像sin()函数那样从sine?返回它吗? -
因为它只是我程序的一部分——它对我的休息程序来说更容易——当然可以使用return,但我认为它不会改变结果。
-
考虑使用来自
math.h的M_PI(只是为了不重新发明轮子)。此外,您可能希望像这样重写您的toRad()函数:double toRad(double in) { return in * PI / 180.0; }
标签: c++ c taylor-series