Jdcbean 中
double jdc_value;setJdc_value(double jdc_value); 
getJdc_value();-----------------------
web页面String jdc_value = request.getParameter("jdc_value");JDCAction ja = new JDCAction ();
System.out.println(Double.parseDouble(jdc_value)); // 打印结果 53654545e9
ja.setJdc_value(Double.parseDouble(jdc_value))   //格式化错误。
-------------------------------------------------------
问题:1 数据库ORACLE number类型。
      2 怎么才能把正确的值保存到数据库中,而丢失小数点     我可以用js控制小数为数3位。整数为10位。但是保存到数据库的数据要么丢失精度,要么不能保存怎么办?
 

解决方案 »

  1.   

    应该是这句话的错误,你直接打印jdc_value是什么,
    例如如果是123.123
    那么System.out.println(Double.parseDouble(jdc_value)); 应该输出123.123
      

  2.   

    不是这个意思!
    我表单的数据是一个很大的数据:65345445646436.3273
    Double.parseDouble(jdc_value)之后,数据精度就丢失了。变成如: 6.53445e14
    我不要这个结果,我想将数据原样保存到数据库中。
      

  3.   

    问题在于:我的BEAN 里的参数是double 类型,数据库是oracle number类型.
    不管我怎么创建format对象,怎么格式化,格式化对象返回的是String类型。
    我还是没办法把,正确的格式保存到bean中,bean 也就没办法保存到数据库中。
    另外有一个问题是:bean 是通过反射自动保存到数据库中的,我不能在bean之后做任何操作。
    String  v =  nf.format(4542645.5454344);
      

  4.   

    Double的精度达不到你的要求啊
    String str = "65345445646436.3273";
    double d = Double.parseDouble(str);
    System.out.println(d);
    System.out.println(new DecimalFormat("#.00000").format(d));已经是打印出
    6.534544564643633E13
    65345445646436.33000
    如果你的数据库支持这么高精度的,你可以改用BigDecimal
      

  5.   

    Decimal(20,5)
    用这个数据类型。
      

  6.   

    double 的精度达不到你要的要求,用folat试试
      

  7.   

    不是啦。不用这么高的精度。
    String v = "254354665.456"   //电压值  一千万以内,小数2位以内。问题在于:我的bean 中的Jdc_value 是double 类型。
    JDCAction ja = new JDCAction (); 
    ja.setJdc_value(Double.parseDouble(jdc_value))  // 格式化错误或者丢失精度
      

  8.   

    要想精度计算,必须使用BigDecimal
    java.math.BigDecimal bd = new java.math.BigDecimal(jdc_value);
    System.out.println("bd=" + bd);否则其他用法都会丢失精度,解析错误,会不会是
    String jdc_value = request.getParameter("jdc_value"); 
    取到的字符串不是纯数字组成的,有其他字符啊