2013-06-12 10 views
20

मैं अपने प्रोजेक्ट में डबल मान का उपयोग करता हूं और मैं हमेशा पहले दो दशमलव अंक दिखाना चाहता हूं, भले ही वे शून्य हों। मैं गोल करने के लिए इस फ़ंक्शन का उपयोग करता हूं और यदि मेरे द्वारा मुद्रित मान 3.47233322 है (सही ढंग से) 3.47 प्रिंट करता है। लेकिन जब मैं प्रिंट करता हूं, उदाहरण के लिए, मान 2 यह प्रिंट करता है 2.0।जावा: डबल: हमेशा दो दशमलव अंकों को कैसे दिखाएं

public static double round(double d) { 
    BigDecimal bd = new BigDecimal(d); 
    bd = bd.setScale(2, BigDecimal.ROUND_HALF_UP); 
    return bd.doubleValue(); 
} 

मैं 2.00 प्रिंट करना चाहता हूं!

क्या स्ट्रिंग्स के बिना ऐसा करने का कोई तरीका है?

धन्यवाद!

संपादित करें: आपके उत्तरों से (जिसमें मैं आपको धन्यवाद देता हूं) मैं समझता हूं कि मैं यह जानने में स्पष्ट नहीं था कि मैं क्या खोज रहा हूं (और मुझे इसके लिए खेद है): मुझे पता है कि संख्या के बाद दो अंक कैसे मुद्रित करें आपके द्वारा प्रस्तावित समाधानों का उपयोग करके ... मैं जो चाहता हूं वह दो अंकों में सीधे दो अंकों में स्टोर करना है! इसलिए जब मैं इस System.out.println("" + d) (जहां डी मूल्य 2 के साथ मेरा डबल है) ऐसा कुछ करता है तो यह 2.00 प्रिंट करता है।

मुझे लगता है कि ऐसा करने का कोई तरीका नहीं है ... सही? फिर भी आपके उत्तरों के लिए धन्यवाद, अगर आपको समाधान पता है तो कृपया मुझे बताएं!

+3

मुझे नहीं लगता कि आप जिस तरह से जावा भंडार डबल मूल्यों को बदल सकते हैं। प्रस्तुत किए जाने पर आप केवल प्रारूपित तरीके को संशोधित कर सकते हैं। –

+0

हाँ ... मुझे लगता है कि आप सही हैं ... मुझे हर बार जब मैं उन्हें उपयोगकर्ता को दिखाता हूं तो मुझे अपने मूल्यों को प्रारूपित करना होगा ... बहुत बार! आपके उत्तर के लिए धन्यवाद! – aveschini

+0

ठीक है, आपको केवल एक बार फॉर्मेटर विधि लिखनी है, मैं इसके बारे में चिंता नहीं करता। ;) –

उत्तर

41

आप कुछ इस तरह का उपयोग कर सकते हैं:

double d = 1.234567; 
DecimalFormat df = new DecimalFormat("#.00"); 
System.out.print(df.format(d)); 

संपादित क्योंकि मैं असली जवाब की जरूरत है और यह गूगल पर आया था वास्तव में सवाल का जवाब देने और किसी ने इस तथ्य के बावजूद जवाब के रूप में चिह्नित किया कि यह दशमलव पर होने पर काम नहीं करेगा।

+0

मैंने जो प्रश्न खोजा है उसे स्पष्ट करने के लिए मैंने अपना प्रश्न संपादित किया। वैसे भी धन्यवाद! – aveschini

+1

मुझे कोड में कोड '.30' दिखाया गया है, यदि दिया गया नंबर '0.3' है, इसलिए मैंने पैटर्न' # 0.00' का उपयोग किया और यह अभी तक ठीक काम किया है –

+0

मेरे लिए, यह उत्तर वास्तव में काम नहीं करता है। यहां मुझे यह मिलता है: '13310.0 13676.31 26600.2' – wintermute

17

उपयोग इस के लिए java.text.NumberFormat:

NumberFormat nf= NumberFormat.getInstance(); 
nf.setMaximumFractionDigits(2); 
nf.setMinimumFractionDigits(2); 
nf.setRoundingMode(RoundingMode.HALF_UP); 

System.out.print(nf.format(decimalNumber)); 
+0

मैंने जो प्रश्न खोजा है उसे स्पष्ट करने के लिए मैंने अपना प्रश्न संपादित किया। वैसे भी धन्यवाद! – aveschini

+0

मैंने जवाब जोड़ा। – darijan

+0

यह xxx.00 – Dexter

3

DecimalFormat सबसे आसान विकल्प है उपयोग करने के लिए:

double roundTwoDecimals(double d) { 
     DecimalFormat twoDecimals = new DecimalFormat("#.##"); 
     return Double.valueOf(twoDecimals.format(d)); 
} 

आशा इससे आपकी समस्या हल करती है ...

+0

मैंने अभी आपके समाधान की कोशिश की ... यह काम नहीं करता है। मैंने 3 रखा और यह 3.0 प्रिंट करता है। – aveschini

+0

मेरा बुरा। मैं बहुत जल्दी था और हमेशा नहीं पढ़ा। DecimalFormat को "##। 00" में बदलने का प्रयास करें। यह आपकी समस्या का समाधान करेगा! –

7

आप बस कर सकते हैं:

double d = yourDoubleValue; 
String formattedData = String.format("%.02f", d); 
+0

यह वह उत्तर है जो किसी भी तरह से संख्या को गोल नहीं करना चाहता। – Siavas

+0

मैं –

0
java.text.DecimalFormat df = new java.text.DecimalFormat("###,###.##"); 
df.setMaximumFractionDigits(2); 
df.setMinimumFractionDigits(2); 
+0

के बाद मूल्य को डबल में स्टोर करना चाहता हूं, आपके कोड के साथ कुछ स्पष्टीकरण अच्छा होगा। – Sakuto

0

आप इस की तरह कुछ का उपयोग कर सकते हैं:

यदि आप उत्तर में भी 0 रखना चाहते हैं: तो प्रारूप स्ट्रिंग में उपयोग (0,00)

double d = 2.46327; 
DecimalFormat df = new DecimalFormat("0.00"); 
System.out.print(df.format(d)); 

उत्पादन: 2,46

double d = 0.0001; 
DecimalFormat df = new DecimalFormat("0.00"); 
System.out.print(df.format(d)); 

उत्पादन: 0,00

हालांकि, अगर आप DecimalFormat DF = नए DecimalFormat का उपयोग करता है, तो (" 0 ## ")।;

double d = 2.46327; 
DecimalFormat df = new DecimalFormat("0.##"); 
System.out.print(df.format(d)); 

आउटपुट: 2।46

double d = 0.0001; 
DecimalFormat df = new DecimalFormat("0.##"); 
System.out.print(df.format(d)); 

उत्पादन: 0

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