ex=1+x/1!+x2/2!+x3/3!+…+xn/n!+…
输出x为0.2~1.0之间步长为0.2的所有ex值(计算精度为0.00001)。
package demo3;
public class demo306 {
static int jiecheng(int a)
{
if(a==1)
return 1;
else
return a*jiecheng(a-1);
}
public static void main(String[] args) {
double a;
double i;
double ex=1.0;
int b;
for(i=0.2;i<=1.0;i+=0.2)
{
for(b=1;b<100;b++)
{
a=ex;
ex=a+Math.pow(i,b)/jiecheng(b);
if(Math.abs(ex-a)<Math.pow(10,-5))
{
//System.out.println("x="+i+",n="+b+"的e(x)为"+ex);
System.out.print("x=%。1f",i);
System.out.printf(",n=%d", b);
System.out.println("的e(x)为"+ex);
break;
}
}
}
}
}
运行结果:
这里我直接println一口气输出时,x=0.6出现了精度问题,可能是编译环境问题或者其他,不过用printf控制浮点数位数时,最后结果就对了。
正确运行结果: