繁体   English   中英

附加两个十进制数字串并解析为double

[英]Appending two decimal number strings and parse as double

我想从String获取结果0.054563并将其解析为double 我目前的尝试看起来像,

String number1 = "54,563";
String number2 = "54,563";

String value = "0.0" + number1;
String value2 = "0.0" + number2;

Double rd1 = Double.parseDouble(value.replaceAll(",","."));
Double rd3 = Double.parseDouble(value2.replaceAll(",","."));
System.out.println(rd1);

但是,当我运行它时,我收到以下错误:

线程“main”中的异常java.lang.NumberFormatException:多个点

你得到了例外,因为value将是“0.054,563”,并且在double字面积中只允许一个句点,如0.1 您的代码value.replaceAll(",",".")只是将值更改为0.054.563 ,由于这两个句0.054.563 ,这仍然是非法的。 之前删除逗号

String value = "0.0" + number1.replaceAll(",", "");

然后,您可以使用Double rd1 = Double.parseDouble(value)而无需额外的replaceAll(...)

我进一步强烈建议您以数学方式进行转换,而不是通过String转换和解析,因为这些是不必要且相当昂贵的操作。

您可以使用正则表达式删除所有非数字。 模式\\D匹配非数字。 如果您需要多次执行此操作,则使用Pattern会更快。 所以你可以做点什么,

String number1 = "54,563";
Pattern p = Pattern.compile("\\D");
Matcher m = p.matcher(number1);
String number2 = "0.0" + m.replaceAll("");
System.out.println(Double.parseDouble(number2));

或者如果你只需要做一次,你可以像在线一样进行

String number1 = "54,563";
String number2 = "0.0" + number1.replaceAll("\\D", "");
System.out.println(Double.parseDouble(number2));

两者都输出你想要的

0.054563

是的,这是可能的。 你必须首先将number1更改为字符串,然后执行该操作。

 String value = "0.0" + Integer.toString(number1);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM