public class Round {
  private static double ROUND_FACTOR = 0.000000000001;
  public static double round(double val,int length){
    double duke = 1;
    for(int i=0;i<length;i++){
        duke = duke*10;
    }
    return Math.round(val*duke + ROUND_FACTOR)/duke;
  }
}这是一个精确的算法。因为直接用Math.round()会出问题。

解决方案 »

  1.   

    public class Round {
      private static double ROUND_FACTOR = 0.000000000001;
      public static double round(double val,int length){
        double duke = 1;
        for(int i=0;i<length;i++){
            duke = duke*10;
        }
        return Math.round(val*duke + ROUND_FACTOR)/duke;
      }
    }这是一个精确的算法。因为直接用Math.round()会出问题。
      

  2.   

    1.用java.text.DecimalFormat格式化你的double:
    DecimalFormat df = new DecimalFormat( "#*.##" );
    String s = df.format( result.getDouble() );
    不过JDBC中对SQL DECIMAL数据类型对应的Java类型是BigDecimal,不是double。