double类型数字"26431297.512"输出时会变为"2.6431297512E7",现在我想照原样输出为"26431297.512"。
具体要求如下所示:
26431297.51287 --> "26431297.51287"
0.000067 -->"0.000067"
3.3 -->"3.3"
其中的小数位数是动态的。
写一个方法实现:public String double2String(double d){ }
分不够再加。

解决方案 »

  1.   

    public class Test {
            public static String doubleToString(double d) {
                    String s = "00000000000000000000000000000000000000000000000000000000000000000000000000";
                    java.text.DecimalFormat df = new java.text.DecimalFormat(s + "." + s);
                    s = df.format(d);
                    s = s.replaceAll("(?<=^\\-?)0+(?=0\\.)|(?<=^\\-?)0+|\\.0+$", "");
                    if (s.indexOf(".") != -1)
                            s = s.replaceAll("0+$", "");
                    return s;
            }        public static void main(String[] args) {
                    double d = 26431297.512;  
                    System.out.println(Test.doubleToString(d));
                    d = 34500.0;
                    System.out.println(Test.doubleToString(d));
                    d = 0.000067;   
                    System.out.println(Test.doubleToString(d));
                    d = 3.3;   
                    System.out.println(Test.doubleToString(d));
                    d = 0;   
                    System.out.println(Test.doubleToString(d));
                    d = -8;   
                    System.out.println(Test.doubleToString(d));
                    d = -000800.023000;   
                    System.out.println(Test.doubleToString(d));
                    d = 0030.20100;   
                    System.out.println(Test.doubleToString(d));
            }}
    我是新手,之前也遇过这问题,就用这么个笨方法.
      

  2.   

    public static String doubleToString(double d) {
      String str = String.format("%.100f", d);
      str = str.replaceAll("(\\.)?0+$", "");
      return str;
    }
      

  3.   

    double a = 26431297.51287;

    DecimalFormat df = new DecimalFormat("###########.##########");
    System.out.println(df.format(a));
      

  4.   

    可以做格式化也可以偷懒啊 生成一个Double对象 然后再toString()
      

  5.   

    有想JVAVA共同学习的和交流的请加QQ群:29252269
      

  6.   

    double d=4;
    System.out.print(d); 这样不就可以了吗?你看看这个方法,可以直接输出DOUBLE类型的呀
      

  7.   

    数据库里为啥不设计成BigDecimal的呢