使用格式将字符串转换为数字

Convert String to Number with Format

我想知道是否有现成的方法可以将格式化的数字字符串转换为数字,例如“123,456.78”转换为123456.78

基本上,与 DecimalFormat 函数不同,DecimalFormat 函数将双精度变量转换为遵循给定格式(例如“###,###.##”模式)的字符串。我想实现此功能的反向操作,它将格式为“###,###.##”的字符串转换为双精度。是否有 API 可以执行此操作?

谢谢。

这是一个简单的方法

    String number = "20,000,000";
    int x = Integer.parseInt(number.replace(",", ""));
    System.out.println(x);

你把不属于数字的char's替换成"",然后解析成一个原语即可。

    String number = "20,000,000.56";
    DecimalFormat df = new DecimalFormat("#");
    df.setMaximumFractionDigits(5);
    double x = Double.parseDouble(number.replace(",", ""));
    System.out.println(df.format(x));

对于 Double 来说有点不同,因为它会显示指数输出,你必须阻止它。上面的代码就是这样做的。

    df.format(x)

Returns 一个字符串,但您可以使用 Double.parseDouble 方法

转换它

这是一种使用 Regexreplace 方法的方法,如果您有多个定界符并且您都知道它们的话:

假设这里的分隔符是“-”和“,”

double x = Double.parseDouble(number.replace("[-,]", "");

你应该看过 documentation for DecimalFormat and its superclass. You would have discovered that it has not only format methods, but also parse methods like this one

做你想做的最简单的方法是:

NumberFormat format = NumberFormat.getInstance();
Number value = format.parse(string);

// If you specifically want a double...
double d = value.doubleValue();

您将必须捕获 ParseException 并处理它。当您的字符串不代表有效数值时,您如何做取决于您想要做什么。如果是用户输入,您可能希望让用户再次输入文本。