如何在Java中将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 楼

您只需要使用Double

String 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);

在运行时,输入了格式错误的字符串产生分配给nullvalueDouble

评论


“如果无法解析您的字符串,则返回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)));