我用的是如下方法:
  (double)(Math.round(Double.parseDouble(s1)*100/Double.parseDouble(s2)))/100
有什么更好的办法,欢迎大家交流!

解决方案 »

  1.   

    不好意思,上面有一点疏忽,完整的方法应该是:
    Double.toString((double)(Math.round(100*Double.parseDouble(s1)/Double.parseDouble(s2)))/100)
      

  2.   

    Java里有一个专门格式化数据的类:java.text.NumberFormat
      

  3.   

    double d = 5.24676;
    DecimalFormat df = new DecimalFormat("##########.0#");
    String s = df.format(d);
    System.out.println(s);
      

  4.   

    double tempresult = Double.parseDouble(s1)/Double.parseDouble(s2);
    java.text.NumberFormat nf =java.text.NumberFormat.getNumberInstance();
    nf.setMaximumFractionDigits(2);
    nf.setMinimumFractionDigits(2);
    String result = nf.format(tempresult);
      

  5.   

    String s1 = "111";
    String s2 = "22";
    System.out.println(new java.math.BigDecimal(new Double(s1).doubleValue() / new Double(s2).doubleValue()).setScale(2, 4));试一下!^_^
      

  6.   

    String s1 = "111";
    String s2 = "22";
    System.out.println(new java.math.BigDecimal(new Double(s1).doubleValue() / new Double(s2).doubleValue()).setScale(2, 4));
      

  7.   

    String s1 = "111";
    String s2 = "22";
    System.out.println(new java.math.BigDecimal(new Double(s1).doubleValue() / new Double(s2).doubleValue()).setScale(2, 4));
      

  8.   

    哦!忘了,再把我的结果转换成String!
      

  9.   

    to: tolimit(求学) 
    高!!!
    真高!!!!!!
      

  10.   

    to:samwong(getMoneyPro.class)这可是标准的四舍五入的算法呀!
    网上的BBS分页什么都是用这种算发的呀!
      

  11.   

    去下载我的软件fitLine,(csdn中搜索可得),其中我制作了一个类用来实现(java实现)四舍五入,四舍六入五成双,首位9(或者8)看作两位有效数字等功能的方法,和你要求的接口一致,软件的帮助文档中恰好提供了这个源码。只可惜我现在不在宿舍,机子不在手边,否则就直接将源码贴出来了,呵呵。
      

  12.   

    直接用BigDecimal就行了,就和上边说的一样
      

  13.   

    首先将原始结果转换成string
    然后找到小数点的位置
    然后取substring
      

  14.   

    DecimalFormat  dt = new DecimalFormat("0.00");   double tmpDouble,tmpDouble1,tmpDouble2;
    tmpDouble1=Double.parseDouble(s1);
    tmpDouble2=Double.parseDouble(s2); 
    tmpDouble=tmpDouble1/tmpDouble2;
    String resulStr;
    resulStr=dt.format(tmpDouble);在前面import java.text.*.
      

  15.   

    /**
       * @param double f: the specified double
       * @param short i: precision
       */
      public double round(double f, short i) {    double dtmp = 0.00;
        long ltmp = 0, ltmp2 = 0;    if (i == 0) {      ltmp = Math.round(f);
          dtmp = (double)ltmp;
        }else{      ltmp = 1;
          for (int j = 1; j <= i; j++)  {        ltmp = 10 * ltmp;
          }
          dtmp = f * ltmp;
          ltmp2 = Math.round(dtmp);
          dtmp = (double)ltmp2/(double)ltmp;
        }
        return dtmp;
      }
      

  16.   

    java中的除法和乘法对于最后的结果是什么样的值取决于运算中的第一个数,如果2.0*100 结果是200.0 而 2*100.0 结果是200出发也是这样,所以
    (double)(Math.round(Double.parseDouble(s1)*100/Double.parseDouble(s2)))/100这个方法可以
      

  17.   

    用BigDecimal应该是最正确的方法。去试试吧
      

  18.   

    http://www.angelfire.com/tx4/cus/notes/javatext.html