2010-02-06 27 views
9

मैं पहले निम्नलिखित दशमलव प्रारूप है:प्रयोग

private static final DecimalFormat decimalFormat = new DecimalFormat("0.00"); 

तो,

इसे बदल सकते हैं:

0.1 -> "0.10" 
0.01 -> "0.01" 
0.001 -> "0.00" 

मैं क्या इच्छा

0.1 -> "0.10" 
0.01 -> "0.01" 
0.001 -> "0.001" 
है

क्या यह संभव है कि मैं इसे प्राप्त कर सकूं DecimalFormat?

new DecimalFormat("0.00######"); 

# का मतलब है एक अंकों शून्य अनुगामी के अलावा वहाँ प्रदर्शित किया जाना चाहिए:

उत्तर

20

DecimalFormat वर्ग "थ्रेड सुरक्षित" नहीं है। तो आप इस प्रारूप के लिए स्थैतिक स्ट्रिंग चर रखने से बेहतर हैं, जबकि आपको अपनी विधि आवश्यक विधि के भीतर DecimalFormat ऑब्जेक्ट को परिभाषित करना चाहिए।

स्टेटिक चर:

private static final String decimalFormatStr = "0.00#"; 

विधि में स्थानीय चर:

DecimalFormat decimalFormat = new DecimalFormat(decimalFormatStr); 
+3

+1। – Kevin

+0

धन्यवाद केविन। कई लोग भूल जाते हैं कि DecimalFormat का उपयोग करते समय। –

+0

थ्रेड-सुरक्षा का उल्लेख करने के लिए धन्यवाद। मैं जल्दी से अपने सभी कोड की समीक्षा करता हूं और उन्हें ठीक करता हूं :) –

13

हाँ, यह का उपयोग करें। 0 का मतलब है कि एक अंक हमेशा प्रदर्शित होता है, भले ही यह पिछला शून्य हो। स्वरूपित स्ट्रिंग में दशमलव स्थानों की संख्या 0 s और # एस की डॉट के बाद कुल संख्या से अधिक नहीं होगी, इसलिए इस उदाहरण में 8 वें दशमलव स्थान के बाद अंकों को छोटा कर दिया जाएगा।

+0

चियर्स अनुगामी शून्य –

6

आप इस तरह यह कर सकते हैं:

NumberFormat f = NumberFormat.getNumberInstance(); 
f.setMinimumFractionDigits(2); 

System.out.println(f.format(0.1)); 
System.out.println(f.format(0.01)); 
System.out.println(f.format(0.001)); 
+0

है रखना चाहता 'NumberFormat' धागा सुरक्षित है? थ्रेड-सुरक्षा का उल्लेख करने के लिए – WitVault

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