【发布时间】:2017-09-01 05:45:42
【问题描述】:
我正在制作简单的计算器,它是 e^x 函数的一部分。
它适用于正数,但不适用于负 x。 我怎样才能让它也适用于负 x?`
double calculateEx(double x) {
double beforeResult = 1, afterResult = 1, term = 1, error = 1, i = 1, j;
while (error > 0.001) {
afterResult = beforeResult;
for (j = 1; j <= i; j++) {
term *= x;
}
term /= fact(i);
afterResult += term;
error = (afterResult - beforeResult) / afterResult;
if (error < 0) error * -1;
error *= 100;
beforeResult = afterResult;
term = 1;
i++;
}
return beforeResult;
}
double fact (double num) {
int i, j;
double total = 1;
for (i = 2; i <= num; i++) {
total = total * i;
}
return total;
}
【问题讨论】:
-
为什么不使用
<math.h>?exp函数可能比您可以轻松用 C 编写的任何代码都快(在某些情况下,它可能只是一条机器指令,但至少您可以期望库编写者将其优化为在它生命的一英寸之内)。 -
小代码审查红旗:你有三个循环。真的有必要吗?
-
这是我学校的作品,教授命令不要使用 math.h 库。我稍后会在我自己的作品中使用它@alasair
-
@KerrekSB 我将再次检查这三个循环。谢谢你的建议:)
标签: c exponential taylor-series ex