我使用以下程序来尝试测量计算机执行牛顿迭代以计算 2 到 50 位小数的平方根所花费的时间。
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。出了什么问题?