我的Java应用程序中有双数字。我需要将String转换为Double,但是数字的字符串表示是
, - 分隔数字的小数部分( 例如1,5 eq 6/4)
。 - 分隔三位数组( 例如1.000.000 eq 1000000)
。 如何将String转换为Double?
答案 0 :(得分:5)
以下是使用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
答案 1 :(得分:3)
看起来德语区域设置具有该数字格式。
Double d = (Double) NumberFormat.getInstance(Locale.GERMAN).parse(s);
答案 2 :(得分:1)
在DecimalFormat中使用parse方法。
答案 3 :(得分:1)
您需要摆脱,
并将,
替换为.
:
String s = "1000.000,15";
double d = Double.valueOf(s.replaceAll("\\.", "").replaceAll("\\,", "."));
System.out.print(d);
答案 4 :(得分:-1)
DecimalFormat
是你的朋友。