2014-11-03 106 views
-5

我需要將格式化字符串轉換爲雙精度字符串,反之亦然。將格式化字符串轉換爲雙精度字符串,反之亦然

$ 40.00將是40.00(反之亦然)

$ 80,000.00將是80000.00(反之亦然)

到目前爲止,我可以格式化字符串,通過取出的美元符號和逗號,但我可以將雙精度值轉換爲格式化的字符串,並在正確的位置放置美元符號和逗號。

+2

http://docs.oracle.com/javase/8/docs/api/java/text/NumberFormat.html#getCurrencyInstance-java.util.Locale- – msrd0 2014-11-03 15:13:24

+0

我建議您搜索[formatting currency](http ://stackoverflow.com/search?q = [java] +格式+貨幣)並閱讀一點。 – 2014-11-03 15:13:32

+1

[Java中的貨幣格式化]可能的重複(http://stackoverflow.com/questions/3075743/usd-currency-formatting-in-java) – anotherdave 2014-11-03 15:16:22

回答

2

如果我理解你,你可以用一個DecimalFormat

public static void main(String[] args) { 
    NumberFormat nf = new DecimalFormat("$#,###.00"); 
    String[] arr = { "$40.00", "$80,000.00" }; 
    for (String str : arr) { 
     try { 
      double dbl = nf.parse(str).doubleValue(); 
      System.out.printf("%s = %.2f and %s%n", str, dbl, 
        nf.format(dbl)); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

輸出做到這一點是

$40.00 = 40.00 and $40.00 
$80,000.00 = 80000.00 and $80,000.00 
+1

您可以添加'<! - language:lang-none - 輸出之前''擺脫數字格式。 – Pshemo 2014-11-03 15:18:25

+0

我忘了提及它需要分開放置。我的錯。 – Pshemo 2014-11-03 15:28:55

+1

@Pshemo太棒了!感謝您的演示。 – 2014-11-03 15:35:42

0

更換所有的美元和使用Regualar表達什麼也沒有昏迷。正則表達式是一種非常有用的技巧,而且非常容易學習。這個是cheat sheet。它相當容易學習。嘗試拿出一些東西,如果你卡在某處伸手可及

然後使用Double.parseDouble包裝類方法將字符串轉換爲double。

+0

當Java已經爲您提供'NumberFormat'時,沒有必要去使用這種技術並使用正則表達式。 – 2014-11-03 15:16:06

+0

它只是完成這個的另一種方式。我經常用它來進行字符串操作 – Chiseled 2014-11-03 15:17:35

相關問題