2011-01-19 12 views
12

मैं प्रकार double के एक चर है, मैं यह परिशुद्धता के 3 दशमलव तक में मुद्रित करने के लिए की जरूरत है, लेकिन यह किसी भी अनुगामी शून्य नहीं होना चाहिए ...प्रारूपण चल बिन्दु संख्या

जैसे। मुझे

2.5 // not 2.500 
2 // not 2.000 
1.375 // exactly till 3 decimals 
2.12 // not 2.120 

मैंने DecimalFormatter का उपयोग करने का प्रयास किया, क्या मैं इसे गलत कर रहा हूं?

DecimalFormat myFormatter = new DecimalFormat("0.000"); 
myFormatter.setDecimalSeparatorAlwaysShown(false); 

धन्यवाद। :)

उत्तर

21

"0.000" के बजाय पैटर्न "0.###" का प्रयास करें:

import java.text.DecimalFormat; 

public class Main { 
    public static void main(String[] args) { 
     DecimalFormat df = new DecimalFormat("0.###"); 
     double[] tests = {2.50, 2.0, 1.3751212, 2.1200}; 
     for(double d : tests) { 
      System.out.println(df.format(d)); 
     } 
    } 
} 

उत्पादन:

2.5 
2 
1.375 
2.12 
+0

@ st0le, चीयर्स! अतिरिक्त जानकारी के लिए –

4

उपयोग NumberFormat वर्ग।

उदाहरण:

double d = 2.5; 
    NumberFormat n = NumberFormat.getInstance(); 
    n.setMaximumFractionDigits(3); 
    System.out.println(n.format(d)); 

आउटपुट 2.5, नहीं 2.500 किया जाएगा।

6

आपका समाधान लगभग सही है, लेकिन आपको शून्य प्रारूप "#" में दशमलव प्रारूप पैटर्न में शून्य '0' को प्रतिस्थापित करना चाहिए।

तो यह इस तरह दिखना चाहिए:

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

और वह लाइन आवश्यक नहीं है (decimalSeparatorAlwaysShown के रूप में डिफ़ॉल्ट रूप से false है):

:

myFormatter.setDecimalSeparatorAlwaysShown(false); 

यहाँ javadocs से संक्षिप्त सारांश है

Symbol Location Localized? Meaning 
0 Number Yes Digit 
# Number Yes Digit, zero shows as absent 

और जावाडोक का लिंक: DecimalFormat

+0

+1। – st0le

+0

फ़्लोटिंग पॉइंट नंबर को प्रिंट करने के लिए 220.90 है? –