为了账号安全,请及时绑定邮箱和手机立即绑定

Java中BigDecimal的平方根

Java中BigDecimal的平方根

猛跑小猪 2019-10-18 15:01:28
我们可以BigDecimal仅使用Java API而不使用定制的100行算法来计算Java 中a的平方根吗?
查看完整描述

3 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

通过使用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)));

}


查看完整回答
1 反对 回复 2019-10-18
?
暮色呼如

TA贡献1853条经验 获得超9个赞

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位的数字非常快!


查看完整回答
反对 回复 2019-10-18
  • 3 回答
  • 0 关注
  • 3127 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信