2014-11-03 149 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

相关问题