在网上查了很久,BigDecimal到底怎么用还是不知道
例如下面的double怎样用BigDecimal写
double A1 (double x1) {
        return 1-Math.pow((1-p),x1);
        }

解决方案 »

  1.   

    BigDecimal bd = new BigDecimal("123456789789789");
    BigDecimal bd2 = bd.pow(12);123456789789789的12次方
      

  2.   

    谢谢楼上的回答,可是因为x1是小数所以定义成double型,但是用double又会产生误差,所以不知道应该怎么办了
      

  3.   

    BigDecimal bd = new BigDecimal(1.23456790E-12);
    BigDecimal bd1 = bd.pow(12);
    System.out.println(bd1.doubleValue());结果:1.2536599971447652E-143
      

  4.   

    这里是源程序,计算总是出现误差,请大家多多指教
    class Keisan {
          public static Keisan f = new Keisan();
          public static void main (String[] args){            double x1;       f.setM(200);
           f.setP(0.3);
           x1=13.123456;
          f.fx(x1);
           System.out.println( f.fx(x1) );
    }
    private double p; private int m;double fx(double x1) {
                    return A1(x1)*A2(x1)+A1(x1)*A1(x1)*(x1+1)/(3*m)
                        +A2(x1)*A2(x1)*(m-x1+1)/(3*m)
                        +A1(x1)*(x1+1)/m
                        +A2(x1)*(x1+m+1)/(2*m)
                        +A2(x1)*(x1+1)/(2*m)
                        +A2(x1)/2+A2(x1)*(x1+1)/(3*m);
            }
    double A1 (double x1) {
            return 1-Math.pow((1-p),x1);
            }
    double A2(double x1) {
              return -Math.pow((1-p),m)+Math.pow((1-p),x1);
             }
            public int getM() {
                    return m;
            }        public void setM(int m) {
                    this.m = m;
            }        public double getP() {
                    return p;
            }        public void setP(double p) {
                    this.p = p;
            }
    }