#include <stdio.h>

#include <math.h>

double factorial(int n) { double result = 1; for (int i = 1; i <= n; i++) { result *= i; } return result; }

double sinx(double x, int n) { double result = 0; for (int i = 0; i <= n; i++) { double numerator = powf(-1, i) * powf(x, 2 * i + 1); double denominator = factorial(2 * i + 1); result += numerator / denominator; } return result; }

int main() { double x; int n; scanf("%lf %d", &x, &n); double result = sinx(x, n); // 使用四舍五入优化结果 printf("%.8lf", round(result * 1e8) / 1e8); return 0; }

如果最后一位有细微差异,可以尝试使用四舍五入函数来对结果进行舍入,以使结果与标准答案更接近。例如,可以使用 round 函数对结果进行四舍五入:

printf("%.8lf", round(result * 1e8) / 1e8);

这样会将结果乘以 10^8,然后四舍五入,再除以 10^8,保留 8 位小数。这样可以消除结果中的细微差异。

C语言实现正弦函数近似计算 - 精确度提升技巧

原文地址: https://www.cveoy.top/t/topic/o7Yv 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录