Convert String om te verdubbelen in Java

Hoe kan ik een Stringzoals "12.34"converteren naar een doublein Java?


Antwoord 1, autoriteit 100%

U kunt Double.parseDouble()om een Stringom te zetten in een double:

String text = "12.34"; // example String
double value = Double.parseDouble(text);

Voor jouw geval ziet het eruit zoals je wilt:

double total = Double.parseDouble(jlbTotal.getText());
double price = Double.parseDouble(jlbPrice.getText());

Antwoord 2, autoriteit 11%

Als je problemen hebt met het ontleden van tekenreeksen naar decimale waarden, moet je “,” in het getal vervangen door “.”


String number = "123,321";
double value = Double.parseDouble( number.replace(",",".") );

Antwoord 3, autoriteit 8%

Probeer het volgende om een string weer om te zetten in een double

String s = "10.1";
Double d = Double.parseDouble(s);

De methode parseDouble zal het gewenste effect bereiken, net als de methode Double.valueOf().


Antwoord 4, autoriteit 7%

double d = Double.parseDouble(aString);

Dit zou de string aString in de dubbele d moeten omzetten.


Antwoord 5, autoriteit 6%

Gebruik new BigDecimal(string). Dit garandeert later een goede berekening.

Als vuistregel: gebruik altijd BigDecimalvoor gevoelige berekeningen zoals geld.

Voorbeeld:

String doubleAsString = "23.23";
BigDecimal price = new BigDecimal(doubleAsString);
BigDecimal total = price.plus(anotherPrice);

Antwoord 6, autoriteit 4%

U hoeft alleen stringwaarden te ontleden met Double

String someValue= "52.23";
Double doubleVal = Double.parseDouble(someValue);
System.out.println(doubleVal);

Antwoord 7, autoriteit 3%

Ik citeer nogmaals het citaat van Robertiano hierboven – omdat dit verreweg de meest veelzijdige en lokalisatie-adaptieve versie is. Het verdient een volledige post!

Een andere optie:

DecimalFormat df = new DecimalFormat(); 
DecimalFormatSymbols sfs = new DecimalFormatSymbols();
sfs.setDecimalSeparator(','); 
df.setDecimalFormatSymbols(sfs);
double d = df.parse(number).doubleValue();

Antwoord 8, autoriteit 2%

String double_string = "100.215";
Double double = Double.parseDouble(double_string);

Antwoord 9

Er is ook een andere manier.

Double temp = Double.valueOf(str);
number = temp.doubleValue();

Double is een klasse en “temp” is een variabele.
“nummer” is het laatste nummer dat u zoekt.


Antwoord 10

Dit is wat ik zou doen

   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
}

U voert bijvoorbeeld de tekenreeks “4 55,63. 0” in de
output zal het dubbele nummer 45563.0


Antwoord 11

String s = "12.34";
double num = Double.valueOf(s);

Antwoord 12

Het gebruik van Double.parseDouble()zonder het omringende try/catch-blok kan ertoe leiden dat een potentiële NumberFormatExceptionde invoer dubbele tekenreeks niet conformeert aan een geldig formaat.

Guava biedt hiervoor een hulpprogramma-methode die nullretourneert voor het geval je string niet kan worden geparseerd.

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

Tijdens runtime levert een verkeerd opgemaakte String-invoer nullop die is toegewezen aan valueDouble


Antwoord 13

Gebruik dit om elk tekenreeksnummer te verdubbelen als je int nodig hebt, converteer gewoon het gegevenstype van num en num2 naar int ;
nam alle gevallen voor elke string dubbel met Eng:”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;
}

Antwoord 14

Probeer dit,
BigDecimal bdVal = nieuwe BigDecimal(str);

Als je alleen Double wilt, probeer dan
Double d = Double.valueOf(str);
System.out.println(String.format(“%.3f”, nieuwe BigDecimal(d)));

Other episodes