Java中要加倍的字符串

Java中要加倍的字符串,java,Java,我的Java应用程序中有两个数字。我需要将字符串转换为Double,但数字的字符串表示形式是 ,-分隔数字的小数部分( 示例1,5等式6/4) .-分隔三位数的组( 示例1.000.000 eq 1000000) 。 如何将字符串转换为双精度?DecimalFormat是您的朋友。使用DecimalFormat中的解析方法。看起来德国语言环境具有该数字格式 Double d = (Double) NumberFormat.getInstance(Locale.GERMAN).parse(s);

我的Java应用程序中有两个数字。我需要将字符串转换为Double,但数字的字符串表示形式是

,-分隔数字的小数部分( 示例1,5等式6/4)

.-分隔三位数的组( 示例1.000.000 eq 1000000)


如何将字符串转换为双精度?

DecimalFormat
是您的朋友。

使用DecimalFormat中的解析方法。

看起来德国语言环境具有该数字格式

Double d = (Double) NumberFormat.getInstance(Locale.GERMAN).parse(s);

您需要去掉
,并用
替换

String s = "1000.000,15";
double d = Double.valueOf(s.replaceAll("\\.", "").replaceAll("\\,", "."));   
System.out.print(d);

下面是一种使用
DecimalFormat
解决此问题的方法,而不必担心区域设置

import java.text.*;

public class Test {

    public static void main(String[] args) throws ParseException {

        DecimalFormatSymbols dfs = new DecimalFormatSymbols();
        dfs.setGroupingSeparator('.');
        dfs.setDecimalSeparator(',');

        DecimalFormat df = new DecimalFormat();
        df.setGroupingSize(3);

        String[] tests = { "15,151.11", "-7,21.3", "8.8" };
        for (String test : tests)
            System.out.printf("\"%s\" -> %f%n", test, df.parseObject(test));
    }
}
输出:

"15,151.11" -> 15151.110000
"-7,21.3" -> -721.300000
"8.8" -> 8.800000

没错,但别忘了你必须使用正确的语言环境。否则它将无法正常工作。您能提供该类的链接吗?@mlkhmm您是指DecimalFormat吗?