जावा में स्ट्रिंग को डबल में बदलें


286

कैसे मैं एक में बदल सकते हैं Stringके रूप में इस तरह के "12.34"एक करने के लिए doubleजावा में?


1
उन तीन जवाबों ने मूल रूप से सिर्फ कुछ साल पहले पोस्ट किए गए शीर्ष-वोट वाले उत्तर को दोहराते हुए सुनिश्चित किया कि उनमें बहुत अधिक उतार-चढ़ाव है।
बर्नहार्ड बार्कर

जवाबों:


471

आप उपयोग कर सकते हैं 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());

इसलिए मेरी कोडिंग कुल डबल होनी चाहिए। डबल.पारदे डबल (स्ट्रिंग) ;;
टाइनीबेलि

4
@ टाइनीबेली: हाँ, ऐसा लग रहा है कि आप चाहते हैं:double total = Double.parseDouble(jlbTotal.getText());
WhiteFang34

1
@ टिनीबेली: आपको उस स्ट्रिंग से टेक्स्ट का हिस्सा निकालने की ज़रूरत है जिसे आप डबल के लिए पार्स करना चाहते हैं। यहां एक तरीका है कि आप इसे अपने मामले के लिए कर सकते हैं, हालांकि मैं गारंटी नहीं दे सकता कि यह सब कुछ के लिए काम करेगा: double total = Double.parseDouble(jlbTotal.getText().replaceAll("[^0-9.]", ""));- यह मूल रूप से सभी वर्णों को बदलता है जो एक संख्या या .कुछ भी नहीं हैं, केवल संख्या और दशमलव बिंदु को पार्स किया जाना है।
व्हाइटफैंग 34

4
मूल्य गणना के लिए डबल का उपयोग करना उचित नहीं है।
बूझो

2
Doubleआदिम प्रकार के doubleउपयोग के बजाय कक्षा के परिणाम की खोज करते समय यहां लालच देने वालों के लिए Double.valueOf(String)
Pshemo

48

यदि आपको दशमलव मानों को स्ट्रिंग करने में समस्या है, तो आपको "," संख्या में "" पर प्रतिस्थापित करना होगा।


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

2
एक अन्य विकल्प: DecimalFormat df = new DecimalFormat (); DecimalFormatSymbols sfs = new DecimalFormatSymbols (); sfs.setDecimalSeparator ( ','); df.setDecimalFormatSymbols (एसएफएस); df.parse (संख्या);
रॉबर्टो

37

एक स्ट्रिंग को वापस डबल में बदलने के लिए, निम्नलिखित प्रयास करें

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

ParseDouble विधि वांछित प्रभाव को प्राप्त करेगी, और इसलिए Double.valueOf () विधि होगी।


2
नहीं, String.valueOf (कुछ) किसी चीज़ का स्ट्रिंग प्रतिनिधित्व लौटाता है: यदि कोई बिल्ट-इन टाइप है या यदि यह एक ऑब्जेक्ट है और यह शून्य है, तो यह someObject.toString () के बराबर है। एक स्ट्रिंग से डबल प्राप्त करने के लिए इसे दूसरे तरीके से करना होगा जैसा कि अन्य उत्तरों में दिखाया गया है (Double.valueOf (someString) एक डबल लौटाता है, और Double.parseDouble (someString) एक डबल लौटाता है)।
जोहान पेट्रक

36
double d = Double.parseDouble(aString);

इसे स्ट्रिंग aString को डबल d में बदलना चाहिए।


aString क्या है? क्या आप मुझे और समझाने में मदद कर सकते हैं?
टाइनीबेली

2
aString सिर्फ एक स्ट्रिंग है। अधिक विशेष रूप से स्ट्रिंग जिसे आप संख्या में बदलना चाहते हैं।
एंड्रियास विंटर-हविद

30

का उपयोग करें new BigDecimal(string)। यह बाद में उचित गणना की गारंटी देगा।

अंगूठे के एक नियम के रूप में - हमेशा BigDecimalधन की तरह संवेदनशील गणना के लिए उपयोग करें ।

उदाहरण:

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

20

आपको केवल डबल का उपयोग करके स्ट्रिंग मानों को पार्स करने की आवश्यकता है

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

14

रॉबर्टियानो के ऊपर फिर से उद्धरण का हवाला देते हुए - क्योंकि यह अब तक का सबसे बहुमुखी और स्थानीयकरण अनुकूली संस्करण है। यह एक पूर्ण पोस्ट के योग्य है!

एक अन्य विकल्प:

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


4

दूसरा रास्ता भी है।

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

डबल एक वर्ग है और "अस्थायी" एक चर है। "संख्या" अंतिम संख्या है जिसे आप खोज रहे हैं।


1
आप केवल जावा 5 पर डबल से डबल को असाइन कर सकते हैं इसके लिए ऑटोबॉक्सिंग / अनबॉक्सिंग के लिए धन्यवाद। संबंधित: Double.parseDouble (string) और Double.valueOf (string) में क्या अंतर है?
बर्नहार्ड बार्कर

3

क्या यही मुझे करना होगा

    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,63। 0" इनपुट करते हैं, आउटपुट डबल नंबर 45563.0 होगा


2

Double.parseDouble()आसपास के try/catchब्लॉक का उपयोग किए बिना संभावित कारण हो सकता NumberFormatExceptionहै इनपुट डबल स्ट्रिंग एक वैध प्रारूप के अनुरूप नहीं था।

अमरूद इसके लिए एक उपयोगिता विधि प्रदान करता है जो 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 अगर आपके स्ट्रिंग को पार्स नहीं किया जा सकता है" - जावदोक उस दावे का समर्थन नहीं करता है।
टॉम

@ यह दो प्रकार का शून्य मान लौटाता है जिसे 0.0 डबल प्रकार में बदला जा सकता है - DYS 13 सेकंड पहले संपादित करें
DYS

1
यह कर सकता है, लेकिन स्वचालित रूप से नहीं और आपका स्निपेट ऐसा करने में विफल रहता है।
टॉम

1

इसका उपयोग किसी भी स्ट्रिंग संख्या को डबल में बदलने के लिए किया जाता है, जब यू की आवश्यकता होती है, बस डेटा प्रकार को num और num2 से int में परिवर्तित करें; 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;
}


0

आप double.parseDouble () का उपयोग कर सकते हैं;

String num = "10.1";
Double x = Double.parseDouble(num);
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.