#include <iostream>
using namespace std;
double fac(int num1) {
int resualt1 = 1;
while (num1 >= 1)
{
resualt1 *= num1;
num1--;
}
return resualt1;
}
double power(int num2, int num3) {
int resualt2 = 1;
while (num3 >= 1)
{
resualt2 *= num2;
num3--;
}
return resualt2;
}
double sin1(double x) {
double sqr = x * x;
double e = x;
double r = 0;
int i = 1;
while (i <= 13) {
double f = e / fac(i);
r = (i % 4 == 1) ? r + f : r - f;
e = e * sqr;
i += 2;
}
return r;
}
int main(){
cout << sin1(5) << endl;
return 0;
}
uj5u.com熱心網友回復:
階乘函式double fac(int num1) , int resualt1 =1;資料型別不對,結果誤差還是有點的,供參考:#include <iostream>
#include <math>
using namespace std;
double fac(int num1) {
double resualt1 = 1.0;
//int resualt1 =1; 13! =6227020800 int占32位,最大值為:2147483647
while (num1 >= 1)
{
resualt1 *= num1;
num1--;
}
return resualt1;
}
double power(int num2, int num3) {
int resualt2 = 1;
while (num3 >= 1)
{
resualt2 *= num2;
num3--;
}
return resualt2;
}
double sin1(double x) {
double sqr = x * x;
double e = x;
double r = 0;
int i = 1;
double f;
while (i <= 13) {
f = e / fac(i);
r = (i % 4 == 1) ? r + f : r - f;
e = e * sqr;
i += 2;
}
return r;
}
int main(){
cout << sin1(5)<<endl;
system("pause");
return 0;
}
//-0.937584
//請按任意鍵繼續. . .
uj5u.com熱心網友回復:
試過了,沒問題,謝謝大佬

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/271008.html
標籤:新手樂園
上一篇:求代碼
