Java 尝试用循环估计e^x
我已经盯着这个看了几个小时了,我似乎不明白为什么我的输出太小了。我的输出符合你的期望,稳定下来,它们只是稳定到错误的值。我非常确定错误在我的主方法的while循环中,或者嵌套for循环中,但我会继续并发布所有内容,以防它隐藏在其他地方 该程序的目的是通过求和1+x+x^2/2!+来估计e^x的值x^3/3!+…+x^n/n!。它需要将n的总和输出到1和10之间的每个值,以及50和100的值。所以总共有12个输出Java 尝试用循环估计e^x,java,for-loop,while-loop,exponential,Java,For Loop,While Loop,Exponential,我已经盯着这个看了几个小时了,我似乎不明白为什么我的输出太小了。我的输出符合你的期望,稳定下来,它们只是稳定到错误的值。我非常确定错误在我的主方法的while循环中,或者嵌套for循环中,但我会继续并发布所有内容,以防它隐藏在其他地方 该程序的目的是通过求和1+x+x^2/2!+来估计e^x的值x^3/3!+…+x^n/n!。它需要将n的总和输出到1和10之间的每个值,以及50和100的值。所以总共有12个输出 import java.io.*; import java.text.Decimal
import java.io.*;
import java.text.DecimalFormat;
public class Ch3Ex7
{
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static double x = 0;
static DecimalFormat df = new DecimalFormat("0.00");
public static void main (String[] args)
{
mainMenu();
int counter = 1;
double heldx = x;
double holderx = 0;
double denom = 1;
double printx = 0;
double f = 1;
while (counter != 100)
{
x = x*heldx;
denom++;
for(int i = 2; i<=denom; i++)
{
f = f*i;
}
holderx = holderx + x/f;
if ((counter > 0 && counter <= 10) || (counter == 50))
{
printx = 1 + heldx + holderx;
System.out.println(df.format(printx));
}
counter++;
}
System.out.println(df.format(printx));
f = 0;
x = 0;
counter = 1;
denom = 1;
callMain();
}
public static void mainMenu()
{
try
{
System.out.println("Requesting user input, press 0 to leave");
x = Integer.parseInt(br.readLine());
space();
if (x == 0)
{
System.exit(0);
}
}
catch(IOException ioe) {}
}
public static void callMain()
{
String[] x = {"A" , "B"};
Ch3Ex7.main(x);
}
public static void space()
{
System.out.println();
}
}
import java.io.*;
导入java.text.DecimalFormat;
公共类Ch3Ex7
{
静态BufferedReader br=新的BufferedReader(新的InputStreamReader(System.in));
静态双x=0;
静态分贝格式df=新分贝格式(“0.00”);
公共静态void main(字符串[]args)
{
主菜单();
int计数器=1;
双heldx=x;
双保持器x=0;
双denom=1;
双打印x=0;
双f=1;
while(计数器!=100)
{
x=x*heldx;
denom++;
对于(int i=2;i 0&&counter而言,问题在于“f”变量。您每次都试图计算该值,但最终都以旧值开始
摆脱for循环,在其位置添加f*=denom;
。问题在于“f”变量。您每次都试图计算该值,但最终都是从旧值开始
摆脱for循环,并在其位置添加f*=denom;
。它们对每个输入值都是错误的吗?它们是否接近?与其强迫我们编译并尝试您的程序,不如向我们展示几个值的输出?它们对每个输入值都是错误的吗?它们是否接近?而不是强迫我们编译并尝试您的程序,可以吗向我们展示几个值的输出?我认为需要在denom++之后,而不是之前。我认为需要在denom++之后,而不是之前。