Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用格式将字符串转换为数字_Java_String Formatting - Fatal编程技术网

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

Java 使用格式将字符串转换为数字,java,string-formatting,Java,String Formatting,我想知道是否存在将格式化的数字字符串转换为数字的现有方法,例如“123456.78”转换为123456.78 基本上,与DecimalFormat函数不同,DecimalFormat函数将双变量转换为给定格式(如“#####,####”模式)后面的字符串。我想实现与此功能相反的功能,将带有“#####,###.##”格式的字符串转换为双精度字符串。有没有API可以做到这一点 谢谢。这里有一个简单的方法 String number = "20,000,000"; int x = I

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

基本上,与DecimalFormat函数不同,DecimalFormat函数将双变量转换为给定格式(如“#####,####”模式)后面的字符串。我想实现与此功能相反的功能,将带有“#####,###.##”格式的字符串转换为双精度字符串。有没有API可以做到这一点


谢谢。

这里有一个简单的方法

    String number = "20,000,000";
    int x = Integer.parseInt(number.replace(",", ""));
    System.out.println(x);
您只需将不属于某个数字的
字符替换为
,然后将其解析为原语

    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));
这是一个有点不同的双重原因,它将显示指数输出,你必须防止。上面的代码就是这样做的

    df.format(x)
返回字符串,但可以使用
Double.parseDouble
方法强制转换它


下面是一个使用
Regex
replace
方法的方法,如果您有多个分隔符,并且您都知道它们:

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


下面是一个简单的方法

    String number = "20,000,000";
    int x = Integer.parseInt(number.replace(",", ""));
    System.out.println(x);
您只需将不属于某个数字的
字符替换为
,然后将其解析为原语

    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));
这是一个有点不同的双重原因,它将显示指数输出,你必须防止。上面的代码就是这样做的

    df.format(x)
返回字符串,但可以使用
Double.parseDouble
方法强制转换它


下面是一个使用
Regex
replace
方法的方法,如果您有多个分隔符,并且您都知道它们:

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


你应该仔细看一下和。你会发现它不仅有
format
方法,还有
parse
等方法

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

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

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

您必须捕获ParseException并处理它。这取决于当字符串不表示有效数值时要执行的操作。如果是用户输入,您可能需要要求用户再次输入文本。

您应该查看和。你会发现它不仅有
format
方法,还有
parse
等方法

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

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

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


您必须捕获ParseException并处理它。这取决于当字符串不表示有效数值时要执行的操作。如果是用户输入,您可能希望要求用户再次输入文本。

您只想将字符串格式转换为正确格式?为什么不使用parseInt或valueOf将字符串转换为整数或double?不只是删除逗号,然后使用
double.parseDouble()
工作吗?您确实检查了and,对吗?您确实注意到它不仅有
格式
方法,而且还有
解析
方法,比如,对吗?DecimalFormat.getNumberInstance(Locale.US).parse(“4265858.26”)。这会有帮助吗?@VGR这应该是一个答案,因为它是正确的。您只想正确转换字符串格式吗?为什么不使用parseInt或valueOf将字符串转换为整数或double?不只是删除逗号,然后使用
double.parseDouble()
工作吗?您确实检查了and,对吗?您确实注意到它不仅有
格式
方法,而且还有
解析
方法,比如,对吗?DecimalFormat.getNumberInstance(Locale.US).parse(“4265858.26”)。这会有帮助吗?@VGR这应该是一个答案,因为它是正确的。OP要求解析为双精度,而不是int。这不是没有任何API,而是使用
整数。parseInt
字符串。替换
API。此外,OP已经了解了DecimalFormat,它可以准确地完成请求的操作,即将带有逗号的数字解析为双精度,而您的答案不会这样做。谢谢,这似乎是唯一的方法。我需要考虑locale来解析字符串,因为“,”可能不是唯一的分隔符。这就是为什么我想看看是否存在采用模式格式字符串的API。@Yassinh当然,但既然您正在创建DecimalFormat,我不知道您为什么不使用它来解析字符串。OP要求解析为双精度,而不是int。这不是没有任何API,这使用的是
Integer.parseInt
String.replace
API。此外,OP已经了解了DecimalFormat,它可以准确地完成请求的操作,即将带有逗号的数字解析为双精度,而您的答案不会这样做。谢谢,这似乎是唯一的方法。我需要考虑locale来解析字符串,因为“,”可能不是唯一的分隔符。这就是为什么我想看看是否存在采用模式格式字符串的API。@Yassinh当然,但既然你正在创建一个DecimalFormat,我不知道你为什么不使用它来解析字符串。谢谢,这就是我想的。谢谢,这就是我想的