在Java中将String转换为double

Tin*_*lly 273 java string double casting type-conversion

我怎么能转换String,如"12.34"一个double在Java中?

Whi*_*g34 453

您可以使用Double.parseDouble()将a转换Stringdouble:

String text = "12.34"; // example String
double value = Double.parseDouble(text);
Run Code Online (Sandbox Code Playgroud)

对于您的情况,它看起来像你想要的:

double total = Double.parseDouble(jlbTotal.getText());
double price = Double.parseDouble(jlbPrice.getText());
Run Code Online (Sandbox Code Playgroud)

  • 使用double进行价格计算是不可取的. (4认同)
  • @TinyBelly:是的,它看起来像你想要的:`double total = Double.parseDouble(jlbTotal.getText());` (3认同)
  • @TinyBelly:您需要从要为双精度解析的字符串中提取文本部分。这是您可以针对您的情况执行此操作的一种方法,尽管我不能保证它适用于所有情况:`double total = Double.parseDouble(jlbTotal.getText().replaceAll("[^0-9.]", " "));` - 这基本上将所有不是数字或 `.` 的字符替换为空,只留下要解析的数字和小数点。 (2认同)
  • 对于那些在搜索类"Double"而不是原始类型`double`的结果时引诱的人,请使用`Double.valueOf(String)`. (2认同)

小智 47

如果在将字符串解析为十进制值时遇到问题,则需要将数字中的","替换为".".


String number = "123,321";
double value = Double.parseDouble( number.replace(",",".") );
Run Code Online (Sandbox Code Playgroud)

  • 另一种选择:DecimalFormat df = new DecimalFormat(); DecimalFormatSymbols sfs = new DecimalFormatSymbols(); sfs.setDecimalSeparator( ''); df.setDecimalFormatSymbols(SFS); df.parse(数); (2认同)

Ale*_*ski 37

要将字符串转换回double,请尝试以下操作

String s = "10.1";
Double d = Double.parseDouble(s);
Run Code Online (Sandbox Code Playgroud)

parseDouble方法将实现所需的效果,Double.valueOf()方法也将如此.

  • 不,String.valueOf(something)返回某事物的String表示:如果某个东西是内置类型,或者它是一个Object而且它是null,否则它等同于someObject.toString().要从String中获取Double,必须按照其他答案的方式进行反向操作(Double.valueOf(someString)返回Double,Double.parseDouble(someString)返回double). (2认同)

And*_*iid 36

double d = Double.parseDouble(aString);
Run Code Online (Sandbox Code Playgroud)

这应该将字符串aString转换为double d.

  • aString只是一个字符串.更具体地说,您要转换为数字的字符串. (2认同)

Boz*_*zho 29

使用new BigDecimal(string).这将保证以后正确计算.

根据经验 - 总是BigDecimal用于像钱这样的敏感计算.

例:

String doubleAsString = "23.23";
BigDecimal price = new BigDecimal(doubleAsString);
BigDecimal total = price.plus(anotherPrice);
Run Code Online (Sandbox Code Playgroud)


Har*_*til 20

您只需要使用Double解析String值

String someValue= "52.23";
Double doubleVal = Double.parseDouble(someValue);
System.out.println(doubleVal);
Run Code Online (Sandbox Code Playgroud)


JBW*_*her 14

再次引用Robertiano的引用 - 因为这是迄今为止最通用和本地化的自适应版本.值得一个完整的帖子!

另外一个选项:

DecimalFormat df = new DecimalFormat(); 
DecimalFormatSymbols sfs = new DecimalFormatSymbols();
sfs.setDecimalSeparator(','); 
df.setDecimalFormatSymbols(sfs);
double d = df.parse(number).doubleValue();
Run Code Online (Sandbox Code Playgroud)


小智 8

String double_string = "100.215";
Double double = Double.parseDouble(double_string);
Run Code Online (Sandbox Code Playgroud)


小智 5

还有另一种方式。

Double temp = Double.valueOf(str);
number = temp.doubleValue();
Run Code Online (Sandbox Code Playgroud)

Double 是一个类,“temp”是一个变量。“数字”是您要查找的最终数字。