1
我使用下面的程序來測試計算機執行牛頓迭代所需的時間,以計算兩到小數點後50位的平方根。System.nanoTime測量牛頓迭代
import java.math.BigDecimal;
public class ScienceFair {
public static BigDecimal NewtonMethod()
{
BigDecimal a = new BigDecimal(1);
BigDecimal btime = new BigDecimal(0);
BigDecimal etime = new BigDecimal(0);
BigDecimal time = new BigDecimal(0);
BigDecimal two = new BigDecimal(2);
while(a.subtract(new BigDecimal("1.41421356237309504880168872420969807856967187537694")).abs().scaleByPowerOfTen(50).doubleValue() < 1)
{
btime = BigDecimal.valueOf(System.nanoTime()*1000000000);
a = a.add(two.divide(a)).divide(two);
etime = BigDecimal.valueOf(System.nanoTime()*1000000000);
time = time.add(etime.subtract(btime));
}
return time;
}
public static void main(String[] args) {
System.out.print(NewtonMethod().toString());
}
}
但是,當我運行它時,它顯示0.什麼是錯的?
對我怎麼可能使這項工作任何想法? –
@AkshajKadaveru,看到我更新的答案。 –
我知道這個衡量操作你以前沒有測量過。但是,你不應該衡量這些嗎? –