Java中BigDecimal的平方根

我们可以BigDecimal仅使用Java API而不使用定制的100行算法来计算Java 中a的平方根吗?



猛跑小猪
浏览 3134回答 3
3回答

不负相思意

通过使用Karp的技巧,可以仅在两行中实现无循环,从而提供32位精度:public static BigDecimal sqrt(BigDecimal value) {    BigDecimal x = new BigDecimal(Math.sqrt(value.doubleValue()));    return x.add(new BigDecimal(value.subtract(x.multiply(x)).doubleValue() / (x.doubleValue() * 2.0)));}

暮色呼如

public static BigDecimal sqrt(BigDecimal A, final int SCALE) {    BigDecimal x0 = new BigDecimal("0");    BigDecimal x1 = new BigDecimal(Math.sqrt(A.doubleValue()));    while (!x0.equals(x1)) {        x0 = x1;        x1 = A.divide(x0, SCALE, ROUND_HALF_UP);        x1 = x1.add(x0);        x1 = x1.divide(TWO, SCALE, ROUND_HALF_UP);    }    return x1;}这项工作完美!超过65536位的数字非常快!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java