将字符串解析为Double

时间:2011-06-21 13:57:12

标签: java

  

可能重复:
  Existing String to Double

我正在尝试将String解析为Double,我不确定这是否是正确的方法。如果有人可以帮我检查一下,并给予反馈,我真的很感激。

以下是代码:

    String amount = enterAmount.getText().toString();
    double subtotal = Double.valueOf(amount).doubleValue();

提前感谢您的好评。

7 个答案:

答案 0 :(得分:7)

你可以尝试

double subtotal = Double.parseDouble(amount);

答案 1 :(得分:4)

String amount = enterAmount.getText();
double subtotal = Double.parseDouble(amount);

答案 2 :(得分:3)

你应该围绕一个try-catch块来包装这个调用并处理NumberFormatException,如果该字符串不能被解析为Double,将会抛出它。

答案 3 :(得分:1)

您也可以试试这个。

double subtotal = Double.parseDouble(amount);

答案 4 :(得分:1)

我做的是(当使用JFormattedTextFieldJTextField时)用点替换所有逗号并删除空格:

String amount = enterAmount.getText();
amount = amount.replace(",",".").replace(" ", "");
double subtotal = Double.parseDouble(amount);

这意味着以下输入将起作用:

12
1,2
1.2
200 000
200 000,01

逗号用于很多欧洲国家:Wikipedia

  

蓝色=点;
  绿色=逗号;
  红色= Momayyez(/)

答案 5 :(得分:1)

您应该使用一些逻辑来确定它是否是有效数字。这是一个测试整数的函数:

public static int validateInteger(String number)
{
  int i = -1;

  try {
  i = Integer.parseInt(number);
  }
  catch (NumberFormatException nfe)
  {}
  catch (NullPointerException npe)
  {}

  return i;
}

在您的情况下,您必须将Integer.parseInt()函数更改为您想要的任何类型。

答案 6 :(得分:0)

如果你想成为国际,你应该使用它:

DecimalFormat.getNumberInstance(Locale).parse(numberAsString).doubleValue()