C语言实现正弦函数近似计算 - 精确度提升技巧
#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 位小数。这样可以消除结果中的细微差异。
原文地址: https://www.cveoy.top/t/topic/o7Yv 著作权归作者所有。请勿转载和采集!