Q&A
求一个数的平方根
第二种方法
public static BigDecimal sqrtRoot(BigDecimal m) {
if ( m.compareTo( new BigDecimal(0)) == 0 ) {
return new BigDecimal(0);
}
BigDecimal i = new BigDecimal("0");
BigDecimal x1 = new BigDecimal("0");
BigDecimal x2 = new BigDecimal("0");
while ( ( i.multiply(i) ).compareTo(m) == -1 ) {
i = i.add( new BigDecimal(0.1).setScale(8, RoundingMode.HALF_UP));
}
x1 = i;
for ( int j = 0; j < 10; j++) {
x2 = m;
x2 = x2.divide(x1, 8, RoundingMode.HALF_UP);
x2 = x2.add(x1);
x2 = x2.divide(new BigDecimal("2"), 8, RoundingMode.HALF_UP);
x1 = x2;
}
return x2;
}
for ( int i = 0; i <= 10; i++ ) {
System.out.println(i + " : " + sqrtRoot( new BigDecimal(i)));
}
Last updated
Was this helpful?