public static BigDecimal sqrt(BigDecimal x) { BigDecimal n1 = BigDecimal.ONE; BigDecimal ans = BigDecimal.ZERO; while ((n1.multiply(n1).subtract(x)).abs().compareTo(BigDecimal.valueOf(0.001)) == 1) { BigDecimal s1 = x.divide(n1, 2000, BigDecimal.ROUND_HALF_UP); BigDecimal s2 = n1.add(s1); n1 = s2.divide(BigDecimal.valueOf(2), 2000, BigDecimal.ROUND_HALF_UP); } ans = n1; BigDecimal rt = new BigDecimal(ans.toString().split("\\.")[0]); return rt; }
转载于:https://my.oschina.net/aijiaoer0624/blog/993951