2011-02-03 13 views
132

में डबल प्रारूपित करने के लिए मैं स्ट्रिंग.फॉर्मैट (प्रारूप स्ट्रिंग, एक्स) का उपयोग कैसे करूं ताकि एक डबल को प्रारूपित किया जा सके ???स्ट्रिंग.फॉर्मैट() जावा

2354548,235 -> 2,354,548.23

धन्यवाद!

उत्तर

231
String.format("%1$,.2f", myDouble); 

String.format स्वचालित रूप से डिफ़ॉल्ट स्थान का उपयोग करता।

+26

आप 'String.format (Locale.GERMAN,"% 1 $, 2f ", myDouble) का उपयोग कर एक विशिष्ट लोकेल का भी उपयोग कर सकते हैं;' –

+8

यदि प्रारूप में एक से अधिक डबल हैं, तो% 1,% 2, और इसी तरह का उपयोग करें। उदाहरण के लिए String.format ("% 1 $, 2f,% 2 $, 2f", myDouble, aDouble) – Moesio

+1

I मान लें कि इस मामले में "% 1 $" वैकल्पिक है। प्रारूप स्ट्रिंग के रूप में सिर्फ "%, 2f" के साथ मेरे लिए काम करता है। –

18

this link से निकाला गया कोड;

Double amount = new Double(345987.246); 
NumberFormat numberFormatter; 
String amountOut; 

numberFormatter = NumberFormat.getNumberInstance(currentLocale); 
amountOut = numberFormatter.format(amount); 
System.out.println(amountOut + " " + 
        currentLocale.toString()); 

इस उदाहरण से उत्पादन दिखाता है कि कैसे एक ही नंबर का प्रारूप लोकेल साथ बदलता रहता है:

345 987,246 fr_FR 
345.987,246 de_DE 
345,987.246 en_US 
+0

मुझे String.format() विधि का उपयोग करना है: '- ( – kike

11
public class MainClass { 
    public static void main(String args[]) { 
    System.out.printf("%d %(d %+d %05d\n", 3, -3, 3, 3); 

    System.out.printf("Default floating-point format: %f\n", 1234567.123); 
    System.out.printf("Floating-point with commas: %,f\n", 1234567.123); 
    System.out.printf("Negative floating-point default: %,f\n", -1234567.123); 
    System.out.printf("Negative floating-point option: %,(f\n", -1234567.123); 

    System.out.printf("Line-up positive and negative values:\n"); 
    System.out.printf("% ,.2f\n% ,.2f\n", 1234567.123, -1234567.123); 
    } 
} 

और प्रिंट आउट:

3 (3) +3 00003
डिफ़ॉल्ट फ्लोटिंग प्वाइंट प्रारूप: 1.234.567,123000
: 1234567,123000
अल्पविरामों से फ्लोटिंग सूत्री नकारात्मक फ्लोटिंग-पॉइंट डिफ़ॉल्ट: -1.234.567,123000
नकारात्मक फ़्लोटिंग-पॉइंट विकल्प: (1.234.567,123000)

लाइन-अप सकारात्मक और नकारात्मक Ive मान:
1.234.567,12
-1.234.567,12

21

आप मैन्युअल रूप से सेट प्रतीकों के साथ यह स्वरूपित करना चाहते हैं, तो इस का उपयोग करें:

DecimalFormatSymbols decimalFormatSymbols = new DecimalFormatSymbols(); 
decimalFormatSymbols.setDecimalSeparator('.'); 
decimalFormatSymbols.setGroupingSeparator(','); 
DecimalFormat decimalFormat = new DecimalFormat("#,##0.00", decimalFormatSymbols); 
System.out.println(decimalFormat.format(1237516.2548)); //1,237,516.25 

लोकेल आधारित स्वरूपण है हालांकि, पसंदीदा।

+1

उपयोगी उत्तर! हालांकि, अंतिम वाक्य "लोकेल-आधारित स्वरूपण को प्राथमिकता दी जाती है, हालांकि" समझ में नहीं आता है संदर्भ संदर्भ। जब आप स्ट्रिंग का एक विशिष्ट प्रारूप उत्पन्न करना चाहते हैं, तो बहुत अच्छे उपयोग के मामले हैं जहां आपको लोकेल-आधारित स्वरूपण का उपयोग नहीं करना चाहिए। जैसे आप बाहरी डेटा में अपने डेटा का निर्यात लागू कर रहे हैं और आप वर्तमान (या किसी भी) लोकेल पर निर्भर नहीं, प्रारूप पर पूर्ण नियंत्रण रखना चाहते हैं। –

24
String.format("%4.3f" , x) ; 

इसका मतलब है कि हमें उत्तर में कुल 4 अंकों की आवश्यकता है, जिनमें से 3 दशमलव के बाद होना चाहिए। और एफ डबल का प्रारूप विनिर्देशक है। एक्स का अर्थ वेरिएबल है जिसके लिए हम इसे खोजना चाहते हैं। मेरे लिए काम किया। । ।

+0

मुझे लगता है कि इसका मतलब यह है कि यह तर्कों में चौथा चर होगा जो दशमलव के बाद 3 स्थानों का पालन करता है और उसके पास होता है। –

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