我用代码往数据库(mysql)中update 几个属性 
    PreparedStatement pstata = null;
        String sqla = null;    
           sqla= "update productattributetable set "+nodename[i3]+"=? where productid="+productid;
      // System.out.println("***"+nodevalue[i3]+"***");
        pstata = conna.prepareStatement(sqla); 
 pstata.setString(1,nodevalue[i3]);        
        pstata.executeUpdate();
        pstata.close();
循环update后把数据库的内容读出来,其中有一个price 是DECIMAL(9,2)型的,取出来用jsp显示。本来值为120,他就显示成120.9800033569336。
为什么呢?
望大师们指点下。

解决方案 »

  1.   

    浮点数是有精度问题的呀
    你要使用浮点数应该是BigDecimal型,别用float或double
      

  2.   

    可能是因为它是浮点型的读出来都会自动加上后面的数据。
    比如date 型的插入数据库的时候是 2008-8-9 读出来它会可能会这样显示:  2008-8-9 12:00:00.0   //自动加上这样你显示的时候就要转换一下了
       public static void main(String[] args) {
    //转换
    DecimalFormat df=new DecimalFormat("0.00");
    String number=df.format(5.000000000);
    System.out.println(number);

    //转换日期
    SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
    String date=sdf.format(new Date());
    System.out.println(date);
      }