2009-01-11 7 views
48

मैं एक स्ट्रिंग जहां मैं हमेशा ज्यादा से ज्यादा 4.जावा दशमलव स्ट्रिंग प्रारूप

तो उदाहरण

"34.49596" would be "34.4959" 
"49.3" would be "49.30" 

के लिए

पट्टा 2 दशमलव पर प्रदर्शित करने और इस उपयोग किया जा सकता करने के लिए दशमलव मान फ़ॉर्मेट करना होगा String.format कमांड? या जावा में ऐसा करने का एक आसान/बेहतर तरीका है।

उत्तर

64

आप java.text.DecimalFormat चाहते हैं।

DecimalFormat df = new DecimalFormat("0.00##"); 
String result = df.format(34.4959); 
+2

एक ही उदाहरण आप गलत परिणाम मिल जाएगा का पालन करें। इस विशेष उदाहरण के लिए आपको RoundingMode.DOWN का उपयोग करने की आवश्यकता है। अन्यथा, यह HALF_EVEN का उपयोग करता है। नहीं, हालांकि नकारात्मक। –

3

java.text.NumberFormat शायद तुम क्या चाहते है चाहता हूँ।

37

यहां एक छोटा कोड स्निपेट कि काम करता है:

double a = 34.51234; 

NumberFormat df = DecimalFormat.getInstance(); 
df.setMinimumFractionDigits(2); 
df.setMaximumFractionDigits(4); 
df.setRoundingMode(RoundingMode.DOWN); 

System.out.println(df.format(a)); 
+0

कोई नकारात्मक नहीं है, लेकिन आपका कोड मूल पोस्टर द्वारा दिए गए पहले उदाहरण के लिए विफल रहता है। RoundingMode.DOWN का उपयोग करने की आवश्यकता है, अन्यथा यह डिफ़ॉल्ट रूप से HALF_EVEN का उपयोग करता है, मुझे लगता है। –

+0

सुधार के लिए धन्यवाद Adeel –

1

NumberFormat और DecimalFormat निश्चित रूप से आप क्या चाहते हैं। इसके अलावा, NumberFormat.setRoundingMode() विधि नोट करें। आप इसे नियंत्रित करने के लिए इसका उपयोग कर सकते हैं कि फ़ॉर्मेटिंग के दौरान गोल या छंटनी कैसे लागू की जाती है।

113

हाँ आप इसे String.format के साथ क्या कर सकते हैं:

String result = String.format("%.2f", 10.0/3.0); 
// result: "3.33" 

result = String.format("%.3f", 2.5); 
// result: "2.500" 
+8

यह पूछे गए प्रश्न का सही उत्तर नहीं हो सकता है, लेकिन यह वह जवाब है जो मैं यहां खोजने के लिए आया था। धन्यवाद! – milosmns

+0

मैं "% .2f" खोज रहा था, इससे मेरी मदद मिली –