C# 我必须给程序一个参数,它必须用“heron进程”作为它的根,而且它必须有30个小数
我的问题是我的while不对。我不知道那里出了什么问题。我如何改变时间来得到正确的东西C# 我必须给程序一个参数,它必须用“heron进程”作为它的根,而且它必须有30个小数,c#,C#,我的问题是我的while不对。我不知道那里出了什么问题。我如何改变时间来得到正确的东西 public static BigDecimal bessereZieheWurzel(int zahl){ BigDecimal bessereZahl = new BigDecimal(zahl); BigDecimal x = new BigDecimal(zahl); BigDecimal zwei = new BigDecimal(2); BigDecimal en
public static BigDecimal bessereZieheWurzel(int zahl){
BigDecimal bessereZahl = new BigDecimal(zahl);
BigDecimal x = new BigDecimal(zahl);
BigDecimal zwei = new BigDecimal(2);
BigDecimal endErg = bessereZahl;
BigDecimal zwischenErg = new BigDecimal(0);
BigDecimal epsilon = new BigDecimal(0.000000000000000000000000000001);
int anzahlSchritte = 1;
BigDecimal variable = new BigDecimal(zahl);
zwischenErg = bessereZahl.divide(x,30, RoundingMode.DOWN).add(x);
zwischenErg = zwischenErg.divide(zwei,30, RoundingMode.DOWN);
BigDecimal letzterDurchlauf = zwischenErg;
x=zwischenErg;
while(letzterDurchlauf.subtract(endErg).compareTo(epsilon) == 1);
endErg = variable.divide(x,30, RoundingMode.DOWN).add(x);
endErg = endErg.divide(zwei,30, RoundingMode.DOWN);
anzahlSchritte ++;
return endErg;
这行代码中发生了什么?
答案是:没有。绝对没有。
要修复此问题,请按如下方式运行:
while(letzterDurchlauf.subtract(endErg).compareTo(epsilon) == 1);
现在您的while循环将正常工作。您的while为空。虽然接受一个块{},但您只给了它一个空语句;。
while(letzterDurchlauf.subtract(endErg).compareTo(epsilon) == 1)
{
//Stuff you want to run goes in here
}