2014-09-05 87 views
0

格式的數字我想格式化這個String爪哇 - 科學記數法

String number = "3.4213946120686956E-9";

這樣:

String number = "3.42E-9";

四捨五入到2位小數。我怎樣才能實現它?

+3

可能的重複http://stackoverflow.com/questions/2944822/format-double-value-in-scientific-notation – resueman 2014-09-05 19:04:14

+0

謝謝,這有幫助。 – gab06 2014-09-05 19:20:17

回答

4

嘗試new DecimalFormat("0.##E0")。的Javadoc:DecimalFormat

實施例:

public class Test { 

    private static java.text.DecimalFormat sf = new java.text.DecimalFormat("0.##E0"); 

    public static void main(String[] args) { 
    System.out.println(sf.format(Double.parseDouble("3.4213946120686956E-9"))); 
    } 
}; 

輸出:3.42E-9

1

這還不是最完美的解決方案,但你可以:

EX:串號= 「3.4213946120686956E-9」;

如果字符串具有周期和E在它

分裂由週期字符串,和週期後得到的第2個字符= 42

得到最後3個在字符end = E-9

然後在period = 3 +「。」之前將所有字符加回來。 + 42 + E-9

+1

不錯,但是這個方法並沒有收起來:) – gab06 2014-09-05 19:23:15

1

閱讀關於DecimalFormat

String number = "3.4213946120686956E-9"; 
    DecimalFormat format = new DecimalFormat("#.##E0"); 
    System.out.println(format.format(new BigDecimal(number)));