double d = 0.0001;
String s1 = String.valueOf(d);//结果为"1.0E-4"
String s2 = new BigDecimal(d).toString();//结果为"1.00000000000xxxxxxxxxxxxx"
....
不能使用格式化方法,因为不能确定double类型的精度.
我试过很多方法都不能得到正确的结果"0.0001".
谁能给个正确的方法呀?

解决方案 »

  1.   

    new DecimalFormat(".####").format(0.001l)
    ici
      

  2.   

    说了不能用格式化方法的,d可以是任何double类型的值,都要得到正确的结果
      

  3.   

    本来double都是近似值,哪里来的正确值
    0.1-0.9 这9个值只有0.5是精确表示的,其他的都是近似值
      

  4.   

    对,就是因为double是近似值,才会有这个问题.
    0.1无论怎么转换都能得到正确的结果;而0.0001为什么就没有办法得到正确的结果呢?
    如果不能得到正确结果,那java的double类型还能用吗?
      

  5.   


    double d = 0.0001d;
    DecimalFormat format = new DecimalFormat("###,###.#######");
    value = format.format(d);
    System.out.println(value);结果输出:
    0.0001
      

  6.   

    double d = 0.0001d;
    DecimalFormat dft = new DecimalFormat("xxx,xxx.xxxxxxx");
    value = dft.format(d);
    System.out.println(value);