下面是我编的,到底哪里错了?无法输出结果
import java.util.*;
import java.math.*;
public class question2
{
//arcsin x = x + x^3/(2*3) + (1*3)x^5/(2*4*5) + 1*3*5(x^7)/(2*4*6*7)……+(2k+1)!!*x^(2k+1)/(2k!!*(2k+1))+……(|x|<1) !!表示双阶乘
public double arcsin(double x)
{
double y=x;
int m=1;
int n=2;
for(int i=1;i<100;i++)
{
y=y+m*Math.pow(x,2*i+1)/(n*(2*i+1));
m=m*(i+2);
n=n*(i+2);
}
return y;
}
public static void main (String args[])
{
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个正弦值x");
question2 q2=new question2();
double x=sc.nextDouble();
q2.arcsin(x);
if(x>1||x
{
System.out.println("请输入正确的值");
}
System.out.println(" "+q2.arcsin(x));
}
}
我发现错误了,精度太高了,小数超界了