import java.math.BigDecimal;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入x: ");
double x = scanner.nextDouble();
double taylor = Taylor(x);
System.out.println(taylor);
}
public static double Taylor(double x){
int i,k;
long fac = 1;
double n=1,y=1,sum=1;
for(i=2;(Math.abs(y))>=1e-6;i+=2) {
n = n*(-1);
for(k=1;k<=i;k++)
fac = fac*k;
y = Math.pow(x, i)*n/fac;
sum+=y;
fac=1;
}
return decimal(sum);
}
public static double decimal(double num) {
BigDecimal bd = new BigDecimal(num);
BigDecimal bd1 = bd.setScale(6,bd.ROUND_HALF_UP);
num = bd1.doubleValue();
long II = Double.doubleToLongBits(num);
return num;
}
//定义求阶乘的方法,递归
public static int Factorial(int n) {
if(n<0) {
return 0;
}else if(n>=0&n<=1) {
return 1;
}else {
return n * Factorial(n-1);
}
}
}