2015-06-04 141 views
2

我遇到問題:如果數字在小數點前有8個或更多數字,則會以科學計數法顯示數字。
有沒有一種簡單的方法可以通過庫或其他方式將此數字轉換爲小數?
我開始創建一個手動方法來解析它,但它似乎過於複雜。將數字從科學計數法轉換爲JAVA中的十進制數

任何幫助將不勝感激。

input example: 1.0225556677556E7 

編輯:我也需要能夠識別一個數字,是在科學記數法

+0

可能重複http://stackoverflow.com/questions/2944822/format-雙值科學記數法) – JAL

+0

@JAL:恰恰相反。 –

+0

@ T.J.Crowder是的,但其中的答案提供了相關鏈接以幫助提問者的文檔。 – JAL

回答

2

您可以輕鬆地使用你的NumberFormat實現你的目標。

String scientificNotation = "1.0225556677556E7"; 
Double scientificDouble = Double.parseDouble(scientificNotation); 
NumberFormat nf = new DecimalFormat("################################################.###########################################"); 
decimalString = nf.format(scientificDouble); 

要回答您關於匹配科學記數法字符串的其他問題,您可以使用正則表達式和String.matches()。這一個是不完美的,雖然得到誤報的概率應該很低:

if(myString.matches("-?[\\d.]+(?:E-?\\d+)?")){ 
    //do work 
} 
[科學記數法格式雙重價值(的
+1

謝謝@jeremy這正是我正在尋找 – peggyLeggy

+1

@jeremy抱歉沒有足夠的代表upvote你,但你應得的!謝謝你的回覆 – peggyLeggy

+0

@peggyLeggy樂於幫忙,歡迎大家堆棧溢出:) – GregH

相關問題