2013-06-25 54 views
1

如果值是这样的(0.0007)以小数点后3个零结束,我得到的结果为4.0E-4 。如何在这种情况下消除指数结果

请告诉我如何解决这个问题

这是我的程序。

package com; 
import java.text.DecimalFormat; 
public class Test { 
    public static void main(String args[]) { 
     try { 
      String result = ""; 
      Test test = new Test(); 
      double value = 0.0004; 
      if (value < 1) { 
       result = test.numberFormat(value, 4); 
      } else { 
       result = test.numberFormat(value, 2); 
      } 
      System.out.println(result); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
    public String numberFormat(double d, int decimals) { 
     if (2 == decimals) 
      return new DecimalFormat("#,###,###,##0.00").format(d); 
     else if (0 == decimals) 
      return new DecimalFormat("#,###,###,##0").format(d); 
     else if (3 == decimals) 
      return new DecimalFormat("#,###,###,##0.000").format(d); 
     else if (4 == decimals) 
      new DecimalFormat("#,###,###,##0.00##").format(d); 
     return String.valueOf(d); 
    } 

} 

回答

6

你只是忘记了return语句。

else if (4 == decimals) 
    return new DecimalFormat("#,###,###,##0.00##").format(d); 

所以在4情况下,可以使用DecimalFormat格式化你的电话号码,但随后恢复只是正常的字符串表示双,最终别的了。

+0

非常感谢很多人。 – Pawan

2

这个怎么样,而不是:

public static String numberFormat(double d, int decimals) { 
    return String.format("%." + decimals + "f", d); 
} 

似乎比你目前在做什么清洁剂。

+1

+1非常好:) – Bohemian

0

例如:

Double a = 2.85d/10000; 
DecimalFormat formatter = new DecimalFormat("0.0000"); 
System.out.println(formatter .format(a)); 

输出:

0.0003 

您还可以使用toPlainString(),然后将其转换成一个数字:

Double a = 2.85d/10000; 
System.out.println(BigDecimal.valueOf(a).toPlainString()); 

输出:

0.000285