2009-10-27 16 views
29

मेरे पास 654987 नंबर है। यह डेटाबेस में एक आईडी है। मैं इसे एक स्ट्रिंग में बदलना चाहता हूं। नियमित डबल। टॉस्ट्रिंग (मान) इसे वैज्ञानिक रूप में बनाता है, 6.54987E5। मुझे कुछ नहीं चाहिए।जावा डबल टू स्ट्रिंग रूपांतरण स्वरूपण के बिना

अन्य स्वरूपण कार्य Ive वर्तमान लोकेल की जांच करता है और उपयुक्त हजार विभाजक और ऐसे जोड़ता है। इसकी एक आईडी के बाद से, मैं किसी भी स्वरूपण को स्वीकार नहीं कर सकता।

यह कैसे करें?

[संपादित करें] स्पष्टीकरण के लिए: मैं एक विशेष डेटाबेस पर काम कर रहा हूं जो सभी संख्यात्मक स्तंभों को युगल के रूप में मानता है। डबल एकमात्र (संख्यात्मक) प्रकार है जिसे मैं डेटाबेस से पुनर्प्राप्त कर सकता हूं।

+3

शीर्ष जवाब देखें, http://stackoverflow.com/questions/47045/sprintf-equivalent-in-java एक ही प्रश्न का उत्तर दें। –

+1

654987 एक पूर्णांक है, दो बार नहीं। क्या आपका मतलब कुछ और था? – Kai

+0

इसे जांचें: http: // stackoverflow।कॉम/प्रश्न/1521122/जावा-कनवर्टिंग-ए-डबल-टू-ए-स्ट्रिंग/1521324 # 1521324 – JuanZe

उत्तर

20

उपयोग लांग:

long id = 654987; 
String str = Long.toString(id); 
6

यदि यह डेटाबेस में एक पूर्णांक आईडी है, तो इसके बजाए एक इंटीजर का उपयोग करें। फिर यह एक पूर्णांक के रूप में प्रारूपित होगा।

+0

निश्चित रूप से एक परिपूर्ण दुनिया में, लेकिन सवाल का कारण यह है कि मैं डेटाबेस में सीमाओं के आसपास काम करने की कोशिश कर रहा हूं; स्टोर करने वाला एकमात्र (न्यूमेरिक) प्रकार एक डबल है। – Mizipzor

2

के बारे में क्या:

Long.toString(value) 

या

new String(value) 
+4

कृपया '' '+ value' का सुझाव न दें! यह एक हैक है और इरादे को किसी भी तरह से व्यक्त नहीं करता है। मैं कहूंगा कि यह कम से कम खराब शैली है। –

+0

ठीक है :) "नया स्ट्रिंग (मान)" के साथ बदल दिया। –

+0

नया स्ट्रिंग (मान) वही समस्या होगी जैसा सवाल बताता है, यदि मान 'डबल' है। –

6

कैसे के बारे में String.valueOf((long)value);

32

उपयोग एक निश्चित NumberFormat (विशेष रूप से एक DecimalFormat):

double value = getValue(); 
String str = new DecimalFormat("#").format(value); 

वैकल्पिक रूप से बस int लिए डाली (या long यदि मानों की श्रेणी में यह बहुत बड़ा):

String str = String.valueOf((long) value); 

लेकिन तब फिर से: तुम क्यों एक पूर्णांक मूल्य क्या है (अर्थात एक "पूर्ण" संख्या) double चर में पहली जगह में?

+1

डबल का कारण यह है कि मैं डेटाबेस के साथ काम कर रहा हूं जो सभी संख्यात्मक कॉलम को युगल के रूप में मानता है। – Mizipzor

+1

यदि आप लंबे समय तक दोगुना करते हैं, तो कभी-कभी मूल्य बदल जाता है। पूर्व के लिए: '((लंबा) ((डबल) 25891000000002001 एल))' 25891000000002000L' – Vigneshwaran

1

यदि आप भंडारण कर रहे हैं एक आईडी (यानी कुछ ही प्रयोग किया जाता किसी अन्य संस्था, जिसका वास्तविक संख्यात्मक मान कोई महत्व है पहचान करने के लिए) तो आप डबल का उपयोग किया जा नहीं करना चाहिए स्टोर करने के लिए है यह। प्रेसिजन लगभग निश्चित रूप से आपको पेंच जाएगा।

यदि आपका डेटाबेस पूर्णांक मानों की अनुमति नहीं देता है तो आपको आईडी को स्ट्रिंग के रूप में संग्रहीत करना चाहिए। यदि आवश्यक हो तो स्ट्रिंग को उस पूर्णांक का स्ट्रिंग प्रस्तुति दें जिसे आप उपयोग करना चाहते हैं। अग्रणी शून्यों के उचित उपयोग के साथ आप स्ट्रिंग के वर्णमाला क्रम को इंट्स के अंकीय क्रम के समान बना सकते हैं।

आपको इस मुद्दे को हल करना चाहिए।

+0

बन जाता है अफसोस की बात है, डेटाबेस और इसके डेटाटाइप दोनों सेट हैं। जिस कॉलम को मैं संभालना चाहता हूं वह एक डबल है और इसके बारे में कुछ भी नहीं है। जब डेटाबेस पढ़ा जाता है तो मैं निश्चित रूप से इसे आंतरिक उपयोग के लिए एक int में परिवर्तित कर देता हूं (या जैसा कि आप सुझाव देते हैं)। यह वास्तव में कोई फर्क नहीं पड़ता क्योंकि समस्या वास्तविक रूपांतरण है, क्योंकि मैं डेटाबेस की सामग्री या लेआउट को बदल नहीं सकता। – Mizipzor

-3
double d = 56789; 
    String s = d+""; 
+1

क्या वह Double.toString (डी) को कॉल नहीं करता है? जो डिफ़ॉल्ट रूप से, यदि मैं गलत नहीं हूं, तो दोनों वैज्ञानिक नोटेशन और हजार विभाजक (यदि आवश्यक हो) जोड़ता है। – Mizipzor

2

इसके अलावा, आप

double value = getValue(); 

NumberFormat f = NumberFormat.getInstance(); 
f.setGroupingUsed(false); 

String strVal = f.format(value); 
0

क्या Long.toString के बारे में ((लंबी) मूल्य) का उपयोग कर सकते हैं?

संबंधित मुद्दे