【问题标题】:Converting from formatted string to double and vice versa从格式化字符串转换为双精度,反之亦然
【发布时间】:2014-11-03 15:10:53
【问题描述】:

我需要将格式化字符串转换为双精度,反之亦然。

$40.00 将是 40.00(反之亦然)

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

到目前为止,我可以通过取出美元符号和逗号来格式化字符串,但我无法将 double 转换回带有正确位置的美元符号和逗号的格式化字符串。

【问题讨论】:

标签: java string double currency


【解决方案1】:

如果我理解你的话,你可以用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

【讨论】:

  • 您可以在输出前添加<!-- language: lang-none -->以摆脱数字格式。
  • 我忘了说它需要放在单独的行中。我的错。
  • @Pshemo 太棒了!感谢您的演示。
【解决方案2】:

使用 Regualar Expression 将所有美元和逗号替换为空。正则表达式是一项非常有用的技能,并且非常容易学习。

这是一个cheat sheet。它相当容易学习。尝试想出一些东西,如果你卡在某个地方,请伸出手

然后使用 Double.parseDouble 包装类方法将字符串转换为双精度。

【讨论】:

  • 当 Java 已经为您提供了NumberFormat 时,没有必要去使用技术和使用正则表达式。
  • 这只是实现此目的的另一种方式。我经常用它来操作字符串
猜你喜欢
  • 2010-09-15
  • 2023-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-27
  • 2021-11-23
  • 1970-01-01
相关资源
最近更新 更多