BigDecimal计算开方

public static void main(String[] args) {
		BigDecimal big = new BigDecimal("68");
		BigDecimal reuturn = sqrt(big,2);
		String result = reuturn.stripTrailingZeros().toPlainString();
		System.out.println("result= "+result);//8.25
	}
	
	/**
	 * 
	 * @Title: sqrt
	 * @Description: TODO 计算开方
	 * @param value  要计算的数字
	 * @param scale  保留多少小数位
	 * @return 
	 * @Author:wushigao
	 * @CreateDate:2022年10月10日 下午2:34:09
	 */
	public static BigDecimal sqrt(BigDecimal value, int scale){
        BigDecimal num2 = BigDecimal.valueOf(2);
        int precision = 100;
        MathContext mc = new MathContext(precision, RoundingMode.HALF_UP);
        BigDecimal deviation = value;
        int cnt = 0;
        while (cnt < precision) {
            deviation = (deviation.add(value.divide(deviation, mc))).divide(num2, mc);
            cnt++;
        }
        deviation = deviation.setScale(scale, BigDecimal.ROUND_HALF_UP);
        return deviation;
    }

  

posted @ 2022-10-10 15:04  信铁寒胜  阅读(801)  评论(0)    收藏  举报