2012-09-11 12 views
17

सी में, printf() कथन पैरामीटर सूची में सटीक लंबाई की आपूर्ति करने की अनुमति देता है।जावा के बराबर printf ("% *। * F")

printf("%*.*f", 7, 3, floatValue); 

जहां तारों को क्रमशः पहले और दूसरे मानों के साथ प्रतिस्थापित किया जाता है।

मैं एंड्रॉइड/जावा में समकक्ष की तलाश में हूं; String.format() एक अपवाद फेंकता है।

संपादित करें: धन्यवाद, @ टेंनर; यह वास्तव में काम करता है।

उत्तर

14

मैं

int places = 7; 
int decimals = 3; 

String.format("%" + places + "." + decimals + "f", floatValue); 

का उपयोग एक छोटी सी बदसूरत (और स्ट्रिंग संयोजन यह अच्छा प्रदर्शन नहीं करता है), लेकिन यह काम करता है।

3
System.out.print(String.format("%.1f",floatValue)); 

यह

+0

आप System.out.format (...) का उपयोग सीधे यहां कर सकते हैं – RNJ

+0

@ बेलससी दोनों ही हैं। Http://docs.oracle.com/javase/1.5.0/docs/api/java/io/PrintStream.html#format%28java.lang.String,%20java.lang.Object...%29 देखें – RNJ

0

इसका इस तरह परिशुद्धता के 1 दशमलव ... साथ floatValue प्रिंट

%AFWPdatatype 

A - तर्क

F की संख्या - झंडे

W - चौड़ाई

P - प्रेसिजन

String.format("%.1f",float_Val);

1

आप प्रारूप को स्वरूपित कर सकते हैं:

String f = String.format("%%%d.%df", 7, 3); 
System.out.println(f); 
System.out.format(f, 111.1111); 

हो जाएगा ताकि उत्पादन:

%7.3f 
111,111 

तुम भी एक छोटे से सहायक इस तरह इस्तेमाल कर सकते हैं:

public static String deepFormatter(String format, Object[]... args) { 
    String result = format; 
    for (int i = 0; i != args.length; ++i) { 
     result = String.format(result, args[i]); 
    } 

    return result; 
} 

निम्न कॉल तब उपरोक्त कोड के बराबर होगा और 111,111 लौटाएगा।

deepFormatter("%%%d.%df", new Object[] {7, 3}, new Object[] {111.1111}); 

यह प्रिंटफ के रूप में सुंदर नहीं है, और इनपुट प्रारूप अव्यवस्थित हो सकता है, लेकिन आप इसके साथ और अधिक कर सकते हैं।