四舍五入的函数如下 我想四舍五入后保留两位小数
public double toDouble2(double dou) {
    BigDecimal bd = new BigDecimal(dou);
    BigDecimal bd1 = bd.setScale(2, bd.ROUND_HALF_UP);
    dou = bd1.doubleValue();
    return dou;
  }
double hehe=this.toDouble2(10000.0*1000000000/1220.0*2440.0*3.0);
System.out.println(hehe);
输出来的值是6.0E13 这个肯定是不正确的
正确的值应该是 1119770.6709665860431783570724716
然后四舍五入之后的值应该是 1119770.67 
现在就是求求大家 我应该怎么才能得到我想要的值

解决方案 »

  1.   

    不管是什么类型 只要是数值型的数据,当数值大到一定程度的时候,系统都会默认用科学记数法来表示并输出的.解决的方法一般是将数值型数据转换为string类型,这样输出的就一个与数值型等值的string了,而不会是科学技术法了         //解决科学技术法的问题,四舍五入保留两位小数
    public static String SicenToComm(double value) {
    String retValue = null;
    DecimalFormat df = new DecimalFormat();
    df.setMinimumFractionDigits(2); 
    df.setMaximumFractionDigits(2); 
    retValue = df.format(value);
    retValue = retValue.replaceAll(",", "");
    return retValue;
    }
      

  2.   

    现在是这个样子的 在数据库中的数我看了 不是科学技术法啊
    比如就是30000000 这是我清清楚楚的在一个数据库里面看见的
    也就是sql server 2005 里面用查询分析器里面看见的
    但是当我在页面中用rs.getString("对应的列名")的时候去出来的却是科学技术法
    我现在在想如果我不用楼上的办法解决的话 那么我可不可以把数据库里面的
    对应的类型变换成varchar