问题如下我有一个大或小数字(可以是一个),我需要调整这个数字并通过计算。鉴于计算的结果,它必须至少在小数点后 5 位上达到某个值。
所以我需要制作一个采用这个起始值的方法,根据当前结果尝试增加或减少它,直到我得到正确的结果。我做了一些尝试,但没有成功。
这是一个根本不起作用的例子,但它暗示了我的意思......(这只是一个小规模的测试用例)
public class Test {
public static void main(String[]args)
{
double ran = 100 + (int)(Math.random() * 100000.999999999);
int count = 0;
double tmpPay = 3666.545;
double top = tmpPay;
double low = 0;
while ( tmpPay != ran )
{
if ( tmpPay > ran)
{
if( low == 0)
{
tmpPay = top / 2;
top = tmpPay;
}
else
{
tmpPay = tmpPay + ((top - low) / 2);
top = tmpPay;
}
}
if (tmpPay < ran)
{
tmpPay = top * 1.5;
low = top;
top = tmpPay;
}
}
System.out.println(" VAlue of RAN: " +ran + "----VALUE OF tmpPay: " + tmpPay + "---------- COUNTER: " + count);
}
示例 2 可能是一个更清晰的描述。这是我现在的解决方案..
guessingValue = firstImput;
while (amortization > tmpPV)
{
guessingValue -= (decimal)1;
//guessingVlue -- > blackbox
amortization = blackboxResults;
}
while (amortization < tmpPV)
{
guessingValue += (decimal)0.00001;
//guessingVlue -- > blackbox
amortization = blackboxResults;
}
}