double d = 0.0001;
String s1 = String.valueOf(d);//结果为1.0E-4
String s2 = new BigDecimal(d).toString();//结果为1.00000000000xxxxxxxxxxxxx
怎样转换才能得到正确的结果(0.0001)?

解决方案 »

  1.   

    double d=0.0001;
     DecimalFormat df1 = new DecimalFormat("#0.#####");
     String result=df1.format(d);
      

  2.   

    import java.text.DecimalFormat;
    import java.text.NumberFormat;
    public class test1 {
    public static void main(String[] args) {
    double d=0.00001;
    NumberFormat nf = NumberFormat.getInstance();
            String s="#.#############";
            nf=new DecimalFormat(s);
            String ss=nf.format(d);
            System.out.print(ss);
    }
    } ///:~不知道还有没有其他 方法
      

  3.   

    System.out.println(Double.toString(12232.4654544646));如果你还要格式化的化,有两种情况
    jdk1.4:参看zx2002027(希望之星) 
    jdk1.5:使用system的格式化输出.
      

  4.   

    class test 
    {
    public static void main(String aaa[])
    {
    double aa = 17.123;
        String as = (""+aa);
        System.out.println (as);
    }

    }
    这样就可以吧
      

  5.   

    用DecimalFormat类实现格式化最合适的
      

  6.   

    double d = 0.0001;
    String s = ""+d;
      

  7.   

    String s = ""+d;的结果也是"1.0E-4",不是"0.0001"
      

  8.   

    天啊,有这么复杂吗
    你就这样
    Double dbl = new Double(0.0000001);
    String strDbl = dbl.toString();
    不就行了
      

  9.   

    楼主的要求似乎有点高了,问题是一个数被弄成double以后计算机自己是无法知道这个数的精度是有多少的,因为浮点数的表示是有误差的,
    所以按照楼主的要求,事先不知道一个double的精度,要求这个doulbe能够准确无误的输出,
    似乎是不可能的事了
      

  10.   

    要求更高的精度可以使用Bigdecimal
      

  11.   

    使用double难道就没有办法了,其实0.0001被转换为1.0e-4并没有损失任何精度只是使用了科学计数法
    难道就不能有个参数控制double不采用科学计数法吗?因此我就是想在double能够达到的精度内的任何
    数值都能正确的输出成小数的形式,这个要求应该不算高吧?
      

  12.   

    但问题是double在计算机中就是以科学记数法存的呀