String
等"12.34"
转换为Java中的double
?#1 楼
您可以使用Double.parseDouble()
将String
转换为double
:String text = "12.34"; // example String
double value = Double.parseDouble(text);
对于您的情况,它看起来像是您想要的:
double total = Double.parseDouble(jlbTotal.getText());
double price = Double.parseDouble(jlbPrice.getText());
评论
所以我的编码应该是double total = Double.parseDouble(string);?
–TinyBelly
2011年4月24日9:20
@TinyBelly:是的,看起来像您想要的:double total = Double.parseDouble(jlbTotal.getText());
–WhiteFang34
2011年4月24日在9:22
@TinyBelly:您需要从要解析为double的字符串中提取文本的一部分。这是您可以针对自己的情况进行操作的一种方法,尽管我不能保证它可以对所有情况起作用:double total = Double.parseDouble(jlbTotal.getText()。replaceAll(“ [^ 0-9。]”,“” )); -这基本上替换了不是数字或。的所有字符。一无所有,只保留要解析的数字和小数点。
–WhiteFang34
11-4-24在10:01
不建议使用double来计算价格。
– Bozho
2011年4月24日上午10:13
对于在搜索类Double而不是原始类型double的结果时引诱此处的用户,请使用Double.valueOf(String)。
– Pshemo
18年7月26日在17:28
#2 楼
如果在将字符串解析为十进制值时遇到问题,则需要将数字中的“,”替换为“。”。String number = "123,321";
double value = Double.parseDouble( number.replace(",",".") );
评论
另一个选择:DecimalFormat df = new DecimalFormat(); DecimalFormatSymbols sfs = new DecimalFormatSymbols(); sfs.setDecimalSeparator(','); df.setDecimalFormatSymbols(sfs); df.parse(number);
–罗伯蒂亚诺
2014-12-11 8:46
#3 楼
要将字符串转换为双精度型,请尝试以下方法String s = "10.1";
Double d = Double.parseDouble(s);
parseDouble方法将实现所需的效果,Double.valueOf()方法也将实现。 br />
评论
不,String.valueOf(something)返回某物的String表示形式:如果某物是内置类型,或者它是一个Object且为null,则等效于someObject.toString()。要从字符串中获取Double,则必须按照相反的方式进行操作,如其他答案所示(Double.valueOf(someString)返回Double,而Double.parseDouble(someString)返回double)。
– jpp1
15年7月27日在17:28
#4 楼
double d = Double.parseDouble(aString);
这应该将字符串aString转换为double d。
评论
aString是指什么?你能帮我解释更多吗?
–TinyBelly
2011年4月24日在9:21
aString只是一个字符串。更具体地说,您要转换为数字的字符串。
– Andreas Vinter-Hviid
2011年4月24日上午10:09
#5 楼
使用new BigDecimal(string)
。这将保证以后进行正确的计算。作为经验法则-始终将
BigDecimal
用于货币之类的敏感计算。示例:
String doubleAsString = "23.23";
BigDecimal price = new BigDecimal(doubleAsString);
BigDecimal total = price.plus(anotherPrice);
#6 楼
您只需要使用DoubleString someValue= "52.23";
Double doubleVal = Double.parseDouble(someValue);
System.out.println(doubleVal);
来解析字符串值
#7 楼
再次引用上面罗伯蒂亚诺的名言-因为这是迄今为止功能最全,本地化程度最高的版本。另一个选择:
DecimalFormat df = new DecimalFormat();
DecimalFormatSymbols sfs = new DecimalFormatSymbols();
sfs.setDecimalSeparator(',');
df.setDecimalFormatSymbols(sfs);
double d = df.parse(number).doubleValue();
#8 楼
String double_string = "100.215";
Double double = Double.parseDouble(double_string);
#9 楼
还有另一种方法。Double temp = Double.valueOf(str);
number = temp.doubleValue();
Double是一个类,而“ temp”是一个变量。
“ number”是您要查找的最终数字。
评论
由于自动装箱/拆箱,您只需从Java 5开始就为Double分配一个Double。相关:Double.parseDouble(string)和Double.valueOf(string)有什么区别?
– Bernhard Barker
17/12/30在20:09
#10 楼
这就是我要做的 public static double convertToDouble(String temp){
String a = temp;
//replace all commas if present with no comma
String s = a.replaceAll(",","").trim();
// if there are any empty spaces also take it out.
String f = s.replaceAll(" ", "");
//now convert the string to double
double result = Double.parseDouble(f);
return result; // return the result
}
例如,您输入字符串“ 4 55,03。0”,
输出将是双精度数字45563.0
#11 楼
在没有包围Double.parseDouble()
块的情况下使用try/catch
可能会导致潜在的NumberFormatException
输入的双字符串不符合有效格式。 Guava为此提供了一种实用方法,如果无法解析您的String,它会返回
null
。https://google.github.io/guava/releases/ 19.0 / api / docs / com / google / common / primitives / Doubles.html#tryParse(java.lang.String)
Double valueDouble = Doubles.tryParse(aPotentiallyCorruptedDoubleString);
在运行时,输入了格式错误的字符串产生分配给
null
的valueDouble
评论
“如果无法解析您的字符串,则返回0.0”-Javadoc不支持该声明。
–汤姆
18年1月9日在9:17
@Tom返回空值Double类型,可以将其转换为0.0 double类型– DYS在13秒前编辑
–DYS
18年1月9日在9:19
它可以但不是自动执行,并且您的代码片段无法执行此操作。
–汤姆
18年1月9日在9:26
#12 楼
当您需要将int数据类型从num和num2转换为int时,使用此函数将任何字符串数字转换为double;用Eng来处理所有字符串double的所有情况:“ Bader Qandeel”
public static double str2doubel(String str) {
double num = 0;
double num2 = 0;
int idForDot = str.indexOf('.');
boolean isNeg = false;
String st;
int start = 0;
int end = str.length();
if (idForDot != -1) {
st = str.substring(0, idForDot);
for (int i = str.length() - 1; i >= idForDot + 1; i--) {
num2 = (num2 + str.charAt(i) - '0') / 10;
}
} else {
st = str;
}
if (st.charAt(0) == '-') {
isNeg = true;
start++;
} else if (st.charAt(0) == '+') {
start++;
}
for (int i = start; i < st.length(); i++) {
if (st.charAt(i) == ',') {
continue;
}
num *= 10;
num += st.charAt(i) - '0';
}
num = num + num2;
if (isNeg) {
num = -1 * num;
}
return num;
}
#13 楼
String s = "12.34";
double num = Double.valueOf(s);
#14 楼
试试这个,BigDecimal bdVal = new BigDecimal(str);
如果只想使用Double,请尝试
Double d = Double.valueOf(str);
System.out.println (String.format(“%。3f”,new BigDecimal(d)));
评论
这三个答案基本上只是复制了几年前发布的投票最多的答案,肯定有很多支持。