2012-06-09 21 views
61

डबल मान कैसे प्राप्त करें जो दशमलव बिंदु के बाद केवल दो अंक है।दशमलव के बाद केवल दो अंक दिखाएं

उदाहरण

के लिए

अगर
i=348842. 
double i2=i/60000; 
tv.setText(String.valueOf(i2)); 

इस कोड 5.81403333 पैदा होता है।

लेकिन मुझे केवल 5.81 चाहिए।

तो मैं क्या करता हूं?

+3

यह सवाल वास्तव में http का डुप्लिकेट नहीं है: // stackoverflow।कॉम/प्रश्न/7415733/कैसे-टू-कन्वर्ट-डबल-टू-2-नंबर-द-डॉट यह प्रश्न फ़ॉर्मेटिंग के बारे में पूछ रहा है; वह प्रश्न 'डबल' में मान बदलने के बारे में पूछ रहा है। – Raedwald

उत्तर

131

DecimalFormat का उपयोग करें।

डेसिमलफॉर्मैट संख्याफॉर्मैट का एक ठोस उप-वर्ग है जो दशमलव संख्या स्वरूपित करता है। इसमें को पश्चिमी, अरबी और इंडिक अंकों के लिए समर्थन सहित किसी भी लोकेल में संख्याओं को पार्स और प्रारूपित करने के लिए डिज़ाइन की गई कई विशेषताएं हैं। यह विभिन्न प्रकारों की संख्या का समर्थन करता है, जिसमें पूर्णांक (123), फिक्स्ड-पॉइंट नंबर (123.4), वैज्ञानिक नोटेशन (1.23 ई 4), प्रतिशत (12%), और मुद्रा रकम ($ 123) शामिल हैं। इन सभी को स्थानीयकृत किया जा सकता है।

कोड स्निपेट -

double i2=i/60000; 
tv.setText(new DecimalFormat("##.##").format(i2)); 

आउटपुट -

5,81

+0

आपको स्ट्रिंग() की आवश्यकता नहीं है, प्रारूप पहले से ही एक स्ट्रिंग देता है। कृपया http://developer.android.com/reference/java/text/DecimalFormat.html –

+1

पर भी जाएं यदि मैं डबल प्रारूप में चाहता हूं? –

+0

इसका डबल मान जिसे 'दशमलव फ़ार्मेट' का उपयोग करके वांछित स्ट्रिंग प्रस्तुति बनाया जा सकता है। खैर मैंने आपके प्रश्न को 100% से कम नहीं किया। –

3
i=348842. 
double i2=i/60000; 
DecimalFormat dtime = new DecimalFormat("#.##"); 
i2= Double.valueOf(dtime.format(time)); 
v.setText(String.valueOf(i2)); 
78

String.format("%.2f", i2) के बारे में कैसे?

+1

दशमलव प्रारूप की तुलना में बहुत कम टाइपिंग, lmao। धन्यवाद। – Hobbyist

+3

लोकेल के आधार पर यह एक अल्पविराम के साथ स्ट्रिंग को प्रारूपित कर सकता है, उदा। 5.32 के बजाय परिणाम = 5,32। – Michael

+0

यह काम कर रहा है .... :) –

2

पहली चीज जिसे डेवलपर हेड में पॉप अनुक्रम में एक संख्या स्वरूपित करते समय पॉप करना चाहिए, इस तरह के विवरणों का ख्याल रखना चाहिए जैसे ऑपरेशन को उलटना संभव होगा।

और अन्य पहलू उचित परिणाम प्रदान कर रहा है। तो आप संख्या को छोटा करना या इसे गोल करना चाहते हैं।

तो शुरू करने से पहले आपको स्वयं से पूछना चाहिए, क्या मुझे मूल्य पर दिलचस्पी है या नहीं।

अपने लक्ष्य को प्राप्त करने के लिए आपके पास कई विकल्प हैं लेकिन उनमें से अधिकतर Format और Formatter का संदर्भ लेते हैं, लेकिन मैं बस this answer में देखने का सुझाव देता हूं।

+0

ऑपरेशन को उलट दें? विपरीत शांत करें: स्ट्रिंग के रूप में एक संख्या को स्वरूपित करना केवल सिस्टम आउटपुट के लिए किया जाना चाहिए और इसे एक अच्छी तरह से डिज़ाइन किए गए सिस्टम में इसकी आवश्यकता नहीं है। –

7

मुझे लगता है कि सबसे अच्छा और आसान समाधान (चुंबन) है:

double i = 348842; 
double i2 = i/60000; 
float k = (float) Math.round(i2 * 100)/100; 
+1

मेरा मानना ​​है कि वह दिलचस्पी लेता है * प्रदर्शन * केवल 2 महत्वपूर्ण अंक कैसे प्रदर्शित करें। इसके अलावा, जिस तरह से फ़्लोटिंग पॉइंट काम करता है, आपका समाधान वास्तव में '5.81' में नहीं होगा, लेकिन कुछ' 5.81000000001' या जैसा होगा। – Petriborg

+3

मुझे लगता है कि यह असंभव है! क्योंकि Math.round - पूर्णांक देता है और हम इसे फ़्लोट मान पर डाल देते हैं। 100 से विभाजित करने के बाद फ्लोट वैल्यू (581.0) कैसे 5.81000000001 की तरह कुछ हो सकता है? क्या आपके पास टेस्ट केस है जो आपकी राय का वर्णन करता है? – Serjio

+0

यह प्रोग्रामर के लिए एक साधारण कोड हो सकता है, इससे मुझे गंभीर स्थिति में मदद मिली। धन्यवाद दोस्त ... 1 – nmkyuppie

21

यहाँ मैं यह है कि कैसे अपने दशमलव कोई कम करने के लिए आप का प्रदर्शन करेंगे, यहाँ मैं दशमलव के बाद 4 मूल्य के लिए कर रहा हूँ कम यह।

double value = 12.3457652133 
    value =Double.parseDouble(new DecimalFormat("##.####").format(value)); 
+0

को टेक्स्ट टेक्स्ट के लिए सेट टेक्स्ट के लिए इंगित किया है: डबल मान = 12.3457652133 textview.setText (नया DecimalFormat ("## । ## ") प्रारूप (Double.parseDouble (मान)))। –

+0

इसमें एक सीमा है, आपको यह सुनिश्चित करना चाहिए कि 'डेसिमलफॉर्मैट' द्वारा उपयोग किया जाने वाला स्थानीय डॉट के साथ डॉट के साथ दशमलव मान लौटा रहा है, अन्यथा 'parseDouble'' नंबरफॉर्मेट अपवाद ' – Adil

5
public class MathRound { 
    public static void main(String[] args) { 

     double number1 = 10.123456; 
     double number2 = (int)Math.round(number1 * 100)/(double)100; 
     System.out.println(number2); 
    } 
} 
संबंधित मुद्दे