我现在有一个函数
public double round(double num){
        ...
return num;
}
当num=10.01时候返回值是10.01,可是当num=10或者num=10.00时候返回值就是10.0了,现在怎么能函数的返回值是double类型的情况下返回值是10.00?
不要告诉我用java.text.NumberFormat,ava.text.DecimalFormat这个是可以格式化,比java.text.DecimalFormat myformat=new java.text.DecimalFormat("#0.00");
System.out.println(myformat.format(num) + "," + Double.parseDouble(myformat.format(num)) + "," + num);但是返回值是字符串的,我就想要返回值是double的。也试过BigDecimal也不行,速求解决方案!

解决方案 »

  1.   

    如果你不喜欢这样就只能用format  如果还不喜欢的话  建议楼主去砍sun公司的负责人,叫他们制定新的规范
      

  2.   

    可不可以想办法把double类型的默认输出改了,比如改个什么系统变量什么的,主要就是要求输出2位小数一致!
      

  3.   

    据我所知,你说的那个更改变量来改变输出,好像是办不到的,你只有通过以下的方法:1. 正如你所说的 DecimalFormat 进行格式化;
    2. 使用 JDK 1.5 的 System.out.printf() 进行格式化输出,使用方法与 C 的 printf() 类似;
      double b = 10.0;
      System.out.printf("%.2f%n", b);
    3. 使用 String.format(); 转成字符串,使用方法同 2。
      double b = 10.0;
      System.out.println(String.format("%.2f", b));
      

  4.   

    在计算机表示数字10.00和10.0是不一样的,它们精度不同,但是显示时肯定只能显示10.0;因为显示10.00是没有意义的(小数点后只能显示0.0的形式,10.00这种数字形式在java中是不允许的),除非String格式化。
      

  5.   

    没有啊,据我测试它们的值是相等的:double b1 = 10.0d;
    double b2 = 10.00d;
    System.out.println(b1 == b2);Double b3 = new Double(10.0d);
    Double b4 = new Double(10.00d);
    System.out.println(b3.compareTo(b4));