比如3.456785E-8,我想不用科学技术发,把他表示成0.000456785,这样的形式怎么解决啊,我用了DecimalFormat进行格式化,但是他格式化的部分是前面的3.456785,还是没有去掉e

解决方案 »

  1.   

    首先明确一点,double不存在格式问题,比如带e和不带e只是double的表示方法问题,对于数值的大小没用影响。如果你要去掉e那么只有将这个double转成String,因为String有格式一说。示意代码如下,具体需要多少位小数和多大的范围,你自己决定。DecimalFormat   df   =   new   DecimalFormat("#,###.##");  
      String   strValue   =   df.format(doubleValue);
      

  2.   

    如果你想进行这样的格式化,恐怕在double的精度范围内做不到啊。
      

  3.   


    看看
    java.text 
    类 DecimalFormat
    java.lang.Object
      java.text.Format
          java.text.NumberFormat
              java.text.DecimalFormat科学计数法
    科学计数法中的数表示为一个尾数和一个 10 的几次幂的乘积,例如可将 1234 表示为 1.234 x 10^3。尾数
    的范围通常是 1.0 <= x < 10.0,但并非必需如此。可指示 DecimalFormat 仅通过某个模式 来格式化和解
    析科学计数法表示的数;目前没有创建科学计数法格式的工厂方法。在这个模式中,指数字符后面紧跟着一个或
    多个数字字符即指示科学计数法。示例:"0.###E0" 将数字 1234 格式化为 "1.234E3"。 指数字符后面的数字位数字符数给出了最小的指数位数。没有最大值。使用本地化的减号来格式化负数指数,不 使用模式中的前缀和后缀。这就允许存在诸如 "0.###E0 m/s" 等此类的模式
    最小和最大整数数字位数一起进行解释: 如果最大整数数字位数大于其最小整数数字位数并且大于 1,则强制要求指数为最大整数数字位数的倍数,并将
    最小整数数字位数解释为 1。最常见的用法是生成工程计数法,其中指数是 3 的倍数,如 "##0.#####E0"。
    使用此模式时,数 12345 格式化为 "12.345E3",123456 则格式化为 "123.456E3"。 
    否则通过调整指数来得到最小整数数字位数。示例:使用 "00.###E0" 格式化 0.00123 时得到 "12.3E-4"。 
    尾数中的有效位数是最小整数 和最大小数 位数的和,不受最大整数位数的影响。例如,使用 "##0.##E0" 格
    式化 12345 得到 "12.3E3"。要显示所有位数,请将有效位数计数设置为零。有效位数不会影响解析。 
    指数模式可能不包含分组分隔符。 
      

  4.   

        BigDecimal bg=new BigDecimal("3.456785E-8");
        System.out.println(bg.toPlainString());