स्ट्रिंग को डबल परिवर्तित करना


201

मुझे यकीन नहीं है कि यह मुझे या क्या है लेकिन मुझे एक डबल स्ट्रिंग को परिवर्तित करने में समस्या हो रही है।

यहाँ मेरा कोड है:

double total = 44;
String total2 = Double.toString(total);

क्या मैं कुछ गलत कर रहा हूँ या मैं यहाँ एक कदम याद कर रहा हूँ

NumberFormatExceptionइसे परिवर्तित करने का प्रयास करने पर मुझे त्रुटि मिलती है ।

totalCost.setOnTouchListener(new OnTouchListener() {
  public boolean onTouch(View v, MotionEvent event) {
    try {
      double priceG = Double.parseDouble(priceGal.getText().toString());
      double valG = Double.parseDouble(volGal.toString());
      double total = priceG * valG;
      String tot = new Double(total).toString();
      totalCost.setText(tot);
    } catch(Exception e) {
      Log.e("text", e.toString());
    }

    return false;
  }         
});

मैं एक onTLListener में ऐसा करने की कोशिश कर रहा हूं। बीमार अधिक कोड, मूल रूप से जब उपयोगकर्ता edittext बॉक्स को छूता है, तो मैं चाहता हूं कि जानकारी edittext बॉक्स को भरें।


4
मुझे ठीक लगता है, आपको किस समस्या का सामना करना पड़ा है?
एमबीडी

2
क्या वह वास्तविक कोड आपके द्वारा निष्पादित किया जा रहा है? उन लाइनों सही काम करते हैं।
mcabral

1
Double.toString (डबल) भी नंबरफ़ॉर्मैट अपवाद को फेंक नहीं सकता - क्या आप सुनिश्चित हैं कि अपवाद कहीं और से नहीं फेंका जा रहा है?
रैंडम 832

1
कुछ और होना चाहिए, यह ठीक काम करना चाहिए। ideone.com/btGrv
केविन

1
स्टैकट्रेस और पूरे कोड दिखाएं
Bozho

जवाबों:


453
double total = 44;
String total2 = String.valueOf(total);

यह डबल स्ट्रिंग में बदल जाएगा


22
निम्नलिखित को ध्यान में रखें यदि कुल = 1234567890123456 तो स्ट्रिंग "1.234567890123456E15" बन जाता है, जो बहुत बार आप नहीं चाहते हैं
user1735824

6
किसी एक के लिए कोई समाधान?
प्रशांत देवबदवार

6
@PrashanthDebbadwar हाँ: NumberFormat fmt = NumberFormat.getInstance(); fmt.setGroupingUsed(false); fmt.setMaximumIntegerDigits(999); fmt.setMaximumFractionDigits(999);तब उपयोग करेंtotal2 = fmt.format(total)
आंद्रियास

यह आंतरिक रूप से कहता है Double.toString()। निश्चित नहीं है कि यह प्रश्न का उत्तर कैसे देता है।
शमोसल

23

Double.toString () का उपयोग करते हुए, यदि संख्या बहुत छोटी या बहुत बड़ी है, तो आपको इस तरह का वैज्ञानिक अंकन मिलेगा: 3.4875546345347673E-6। आउटपुट स्ट्रिंग प्रारूप के अधिक नियंत्रण के कई तरीके हैं।

double num = 0.000074635638;
// use Double.toString()
System.out.println(Double.toString(num));
// result: 7.4635638E-5

// use String.format
System.out.println(String.format ("%f", num));
// result: 0.000075
System.out.println(String.format ("%.9f", num));
// result: 0.000074636

// use DecimalFormat
DecimalFormat decimalFormat = new DecimalFormat("#,##0.000000");
String numberAsString = decimalFormat.format(num);
System.out.println(numberAsString);
// result: 0.000075

String.format () का उपयोग करना सबसे अच्छा सुविधाजनक तरीका होगा।


14

यह कोड मेरे लिए संकलित और काम करता है। यह आपके द्वारा कोशिश की गई कॉल का उपयोग करके एक डबल को एक स्ट्रिंग में परिवर्तित करता है।

public class TestDouble {

    public static void main(String[] args) {
        double total = 44;
        String total2 = Double.toString(total);

        System.out.println("Double is " + total2);
    }
}

मैं आपके द्वारा NumberFormatException देखकर हैरान हूं। स्टैक ट्रेस को देखें। मैं अनुमान लगा रहा हूं कि आपके पास अन्य कोड है जो आप अपने उदाहरण में नहीं दिखा रहे हैं जो उस अपवाद को फेंक रहा है।


मैं आपके द्वारा NumberFormatException देखकर हैरान हूं। स्टैक ट्रेस को देखें। मैं अनुमान लगा रहा हूं कि आपके पास अन्य कोड है जो आप अपने उदाहरण में नहीं दिखा रहे हैं जो उस अपवाद को फेंक रहा है।
ditkin

1
तो ओपी कोड करता है। हल करने के लिए यहाँ कोई समस्या नहीं है।
ब्रायन रोच

संभव है, मैं एक onTLListener में ऐसा करने की कोशिश कर रहा हूं। बीमार अधिक कोड, मूल रूप से जब उपयोगकर्ता edittext बॉक्स को छूता है, तो मैं चाहता हूं कि जानकारी edittext बॉक्स को भरें।
ब्रैंडन विल्सन

6

अपवाद शायद पार्सडबल () कॉल से आता है। जांचें कि उस फ़ंक्शन को दिए गए मान वास्तव में एक डबल दर्शाते हैं।


3
double priceG = Double.parseDouble(priceGal.getText().toString());

double valG = Double.parseDouble(volGal.toString());

double priceG = Double.parseDouble(priceGal.getText().toString());

double valG = Double.parseDouble(volGal.toString());

double priceG = Double.parseDouble(priceGal.getText().toString());

double valG = Double.parseDouble(volGal.toString());

यह काम करता हैं। दोहराव हो गया।


3

Kotlin

आप .toStringकिसी भी डेटा प्रकार पर सीधे कोटलिन में उपयोग कर सकते हैं , जैसे

val d : Double = 100.00
val string : String = d.toString()

1
double total = 44;
String total2= new Double(total).toString();

यह कोड काम करता है


3
Double.toString()कॉल String.valueOf(double)जो कॉल Double.toString(double)। पागल, एह?
corsiKa

तो ओपी कोड करता है। हल करने के लिए यहाँ कोई समस्या नहीं है।
ब्रायन रोच

2
@ मुहम्मद - संभव ?? यह वही करता है
ब्रायन रोच

2
@ अच्छी तरह से, आप एक वस्तु बना रहे हैं बस उसके स्ट्रिंग मूल्य प्राप्त करने के लिए। यदि यह किसी प्रकार के पाश में थे, तो आप बहुत अधिक अतिरिक्त (अनावश्यक) ओवरहेड अनुभव कर सकते हैं। मैं समय से पहले अनुकूलन का एक बड़ा प्रशंसक नहीं हूं, लेकिन मैं स्पष्ट कमियों से बचने का प्रशंसक हूं।
corsiKa

1
@ ब्रायन ओके मैं समझता हूं :) धन्यवाद। आप सही हैं, इसलिए ग्लोकोडर
ओलीनरन

1
double priceG = Double.parseDouble(priceGal.getText().toString());
double valG = Double.parseDouble(volGal.toString());

उनमें से एक अपवाद फेंक रहा है। आप / कुछ लॉगिंग जोड़ने के लिए क्या में है देखने के लिए मुद्रण की जरूरत है volGalऔर priceGalहै - यह आप क्या सोचते नहीं है।


मैंने कुल संख्या को 44 की तरह एक कठिन संख्या में बदल दिया और इसने मुझे अभी भी एक त्रुटि दी।
ब्रैंडन विल्सन

क्या "कुल"? आपका मूल कोड स्निपिट उस अपवाद को नहीं फेंक सकता। ऊपर दिखाए गए दो कॉल मैं कर सकता हूं। आपका Stringकोई एक मान्य प्रतिनिधित्व नहीं है doubleजिसके कारण आपको वह अपवाद मिल रहा है।
ब्रायन रोच

स्पष्ट होना; Double.toString(total); एक अपवाद नहीं फेंक सकता। कभी। । आपने इसे बदल दिया, जिसे आप new Double(total).toString();भी नहीं कर सकते हैं और यदि आप यहाँ उत्तर देखते हैं कि वोट दिया गया है तो यह ऐसा कुछ नहीं है जिसे आप कभी करना चाहते हैं।
ब्रायन रोच

ठीक बीमार है कि बदल दिया है। मैं ontouchlistener से बाहर कोड के उस लिट्ल बिट ले जाया गया और यह ठीक काम किया। लेकिन जब यह ontouchlistener में होता है तो यह एरर फेंक देता है। मैं एक onTLListener में ऐसा करने की कोशिश कर रहा हूं। बीमार अधिक कोड, मूल रूप से जब उपयोगकर्ता edittext बॉक्स को छूता है, तो मैं चाहता हूं कि जानकारी edittext बॉक्स को भरें।
ब्रैंडन विल्सन

1

double.toString()कार्य करना चाहिए। चर प्रकार नहीं Double, बल्कि चर ही double


आप पर विचार करना चाहिए कि कभी कभी ऐसा लगता है कि -2.23561E5 ई वैज्ञानिक संकेतन के साथ नंबर वापस आ जाएगी
Augustas

0

बस निम्नलिखित का उपयोग करें:

doublevalue+""; 

यह किसी भी डेटा प्रकार के लिए काम करेगा।

उदाहरण:

Double dd=10.09;
String ss=dd+"";

7
खाली स्ट्रिंग में जोड़कर बहुत खराब करने की आदत। इसके बजाय समर्पित JDK
फंक का

2
@ Michael.P यह बुरा क्यों है?
गाब ०६

मैं एक जावा प्रोग्रामर योग्य के रूप में अपने सभी समय के लिए ऐसा कर रहा हूं।
गाब ०६

1
जब तक खेल में कुछ संकलन-समय अनुकूलन नहीं होता है, यह एक अतिरिक्त निर्माता और परिशिष्ट विधि को बुलाएगा।
dsmith

1
इसके बजाय हमेशा String.valueOf (dd) का उपयोग करें। यह किसी भी डेटा प्रकार के लिए भी काम करेगा।
BladeCoder

0

StringBuilderवर्ग का उपयोग करें , जैसे:

StringBuilder meme = new StringBuilder(" ");

// Convert and append your double variable
meme.append(String.valueOf(doubleVariable));

// Convert string builder to string
jTextField9.setText(meme.toString());

आपको मनचाहा आउटपुट मिलेगा।


0

कैसे के बारे में जब आप करते हैं

totalCost.setText(tot);

तुम बस करो

totalCost.setText( "" + total );

जहाँ "" + <चर> इसे स्वचालित रूप से स्ट्रिंग में बदल देगा


0

पूरी जानकारी

आप फ्लोटिंग, डबल, इंट, बूलियन आदि के लिए String.valueOf () का उपयोग कर सकते हैं।

double d = 0;
float f = 0;
int i = 0;
short i1 = 0;
char c = 0;
boolean bool = false;
char[] chars = {};
Object obj = new Object();


String.valueOf(d);
String.valueOf(i);
String.valueOf(i1);
String.valueOf(f);
String.valueOf(c);
String.valueOf(chars);
String.valueOf(bool);
String.valueOf(obj);

0

डबल को स्ट्रिंग में बदलने के तीन तरीके हैं ।

  1. Double.toString (घ)
  2. String.valueOf (घ)
  3. "" + D

    सार्वजनिक वर्ग DoubleToString {

    public static void main(String[] args) {
        double d = 122;
        System.out.println(Double.toString(d));
        System.out.println(String.valueOf(d));
        System.out.println(""+d);
    
    }

    }

स्ट्रिंग डबल करने के लिए

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