2012-01-11 18 views
237

संभव डुप्लिकेट:
Round a double to 2 significant figures after decimal pointसबसे अच्छा तरीका देता है

मैं अपने आवेदन में डबल मूल्यों का बहुत कुछ के साथ काम कर रहा हूँ, वहाँ किसी भी आसान तरीका है जावा में दशमलव मानों के स्वरूपण को संभालने के लिए?

वहाँ से

DecimalFormat df = new DecimalFormat("#.##"); 

यह कर के किसी भी अन्य बेहतर तरीका क्या मैं मूल रूप से क्या करना चाहते हैं प्रारूप की तरह

23.59004 to 23.59 

35.7 to 35.70 

3.0 to 3.00 

9 to 9.00 
+1

एक अतिरिक्त लाइन से अधिक आसान है? मुझे पूरा यकीन है कि दशमलव प्रारूपित करने का सबसे सरल, स्पष्ट तरीका है। ध्यान रखें कि यदि इस कार्यक्रम का उपयोग अलग-अलग इलाकों में लोगों द्वारा किया जाएगा तो DecimalFormat ',' या '।' का उपयोग करेगा। दशमलव विभाजक के लिए उपयुक्त के रूप में। इसने हाल ही में एक परियोजना में कुछ समस्याएं पैदा कीं: टेक्स्टबॉक्स पर लिखना और उससे गलत मूल्य पढ़ना। – Dogmatixed

+1

Thats जो मुझे बहुत चिंतित है, मैंने डिफ़ॉल्ट लोकेल द्वारा DecimalFormat पढ़ा। क्या आप कृपया मुझे बता सकते हैं कि आप इसे स्थानीयकरण के साथ कैसे काम करते हैं? –

+0

मैंने इनपुट के लिए JFormattedTextFields का उपयोग किया, setValue() का उपयोग करके उन्हें पॉप्युलेट किया और getValue() का उपयोग करके उनसे पढ़ना। उन स्थानों के लिए जहां इसे दशमलव की आवश्यकता होती है, मैंने DecimalFormatSymbols ऑब्जेक्ट का उपयोग किया। – Dogmatixed

उत्तर

380

नहीं, कोई बेहतर तरीका है डबल मूल्यों है।

दरअसल आपको अपने पैटर्न में कोई त्रुटि है। क्या आप चाहते हैं:

DecimalFormat df = new DecimalFormat("#.00"); 

नोट "00", बिल्कुल दो दशमलव स्थानों अर्थ।

आप उपयोग "#.##" (# का अर्थ है "वैकल्पिक" अंक), तो यह शून्य अनुगामी छोड़ देंगे - new DecimalFormat("#.##").format(3.0d); प्रिंट सिर्फ "3", नहीं "3.00" अर्थात्।

+0

दरअसल, # ### के साथ प्रारूपण 3.0 प्रिंट 3. –

+0

0.99 के बारे में क्या यह .99 या 0.99 में परिवर्तित हो जाएगा? –

+15

@ मुबारर अहमद '.99" '-' '' का अर्थ है "वैकल्पिक शून्य"। यदि आप अग्रणी शून्य (यानी उत्पादन '"0.9 9" ') को संरक्षित करना चाहते हैं तो पैटर्न' # 0.00" ' – Bohemian

294

एक वैकल्पिक String.format उपयोग करने के लिए है:

double[] arr = { 23.59004, 
    35.7, 
    3.0, 
    9 
}; 

for (double dub : arr) { 
    System.out.println(String.format("%.2f", dub)); 
} 

उत्पादन:

23.59 
35.70 
3.00 
9.00 

तुम भी System.out.format (एक ही विधि का हस्ताक्षर) इस्तेमाल कर सकते हैं, या एक java.util.Formatter जो एक ही तरह से काम करता है बनाएँ।

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