Online Compiler C

#include <stdio.h> float sinus(float x) { float sum = 0; float term = x; int sign = 1; int n = 1; sum += term; while (term > 0.001f || term < -0.001f) { sign = -sign; n += 2; term = term * (-x * x) / ((n - 1) * n); sum += term; } return sum; }
这段代码实现了一个计算正弦函数近似值的函数,使用泰勒级数展开。它通过循环累加项直到当前项的绝对值小于0.001为止。

- 循环条件 `term > 0.001f || term < -0.001f` 在 term 为负值时可能无法正确终止,因为当 term 是负数且绝对值小于0.001时,第一个条件为假,但第二个条件仍然为真,导致循环继续。应该使用绝对值判断。
- 变量 `sign` 被定义但从未在计算中使用,实际上 term 的符号已经通过 `(-x * x)` 的乘法隐含处理了,但这样会导致符号变化逻辑不清晰。检查 term 的更新公式是否与泰勒级数一致。