Generated servlet error:
D:\Tomcat 5.0\work\Catalina\localhost\sacmi\org\apache\jsp\jsp\BeiAn_jsp.java:23
9: incompatible types
found   : java.lang.String
required: double accAcount = dec.format(x1.doubleValue()+x2.doubleValue());
                                                                ^
1 error
错误!

解决方案 »

  1.   

    String z = dec.format(x1+x2+x3); 返回的是String,而不是double
      

  2.   

    x1是double类型??那怎么会有doubleValue方法??
      

  3.   

    //别人给我的,特好用,共享,专用java的double计算
    import java.math.BigDecimal;
    public class Arith{
        //默认除法运算精度    private static final int DEF_DIV_SCALE = 10;    //这个类不能实例化    private Arith(){
        }    /**     * 提供精确的加法运算。     * @param v1 被加数     * @param v2 加数     * @return 两个参数的和     */    public static double add(double v1,double v2){        BigDecimal b1 = new BigDecimal(Double.toString(v1));        BigDecimal b2 = new BigDecimal(Double.toString(v2));        return b1.add(b2).doubleValue();    }    /**     * 提供精确的减法运算。     * @param v1 被减数     * @param v2 减数     * @return 两个参数的差     */    public static double sub(double v1,double v2){        BigDecimal b1 = new BigDecimal(Double.toString(v1));        BigDecimal b2 = new BigDecimal(Double.toString(v2));        return b1.subtract(b2).doubleValue();    }    /**     * 提供精确的乘法运算。     * @param v1 被乘数     * @param v2 乘数     * @return 两个参数的积     */    public static double mul(double v1,double v2){        BigDecimal b1 = new BigDecimal(Double.toString(v1));        BigDecimal b2 = new BigDecimal(Double.toString(v2));        return b1.multiply(b2).doubleValue();    }    /**     * 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到     * 小数点以后10位,以后的数字四舍五入。     * @param v1 被除数     * @param v2 除数     * @return 两个参数的商     */    public static double div(double v1,double v2){        return div(v1,v2,DEF_DIV_SCALE);    }    /**     * 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指     * 定精度,以后的数字四舍五入。     * @param v1 被除数     * @param v2 除数     * @param scale 表示表示需要精确到小数点以后几位。     * @return 两个参数的商*/
        public static double div(double v1,double v2,int scale){        if(scale<0){            throw new IllegalArgumentException(                "The scale must be a positive integer or zero");        }        BigDecimal b1 = new BigDecimal(Double.toString(v1));        BigDecimal b2 = new BigDecimal(Double.toString(v2));        return b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();    }    /**     * 提供精确的小数位四舍五入处理。     * @param v 需要四舍五入的数字     * @param scale 小数点后保留几位     * @return 四舍五入后的结果     */    public static double round(double v,int scale){        if(scale<0){            throw new IllegalArgumentException(                "The scale must be a positive integer or zero");        }        BigDecimal b = new BigDecimal(Double.toString(v));        BigDecimal one = new BigDecimal("1");        return b.divide(one,scale,BigDecimal.ROUND_HALF_UP).doubleValue();    }};
      

  4.   

    double value = x1+x2+x3;
    java.math.BigDecimal bb = new java.math.BigDecimal(value);
    String str = bb.setScale(2, java.math.BigDecimal.ROUND_HALF_EVEN).toString();
    System.out.println(str);
      

  5.   

    数据类型不对,
    看报错的信息,x1应该是Double类的,而不是double原始类型! String format(double number) 
              Specialization of format. 
    而且format方法的返回类型是String而不是double.
    你先仔细查下API吧!
      

  6.   

    java.text.DecimalFormat df = new java.text.DecimalFormat("#0.00");
    double x1,x2,x3,result;
    x1=1.234;
    x2=1.234;
    x3=1.234;
    result=Double.parseDouble(df.format(x1+x2+x3));
    System.out.println(result);
    System.out.println(x1+x2+x3);
      

  7.   

    eg:
    (new java.text.DecimalFormat("0.00000").format(x1+x2+x3))  结果为字符串