2010-01-29 14 views
9

जावा में, क्या वास्तव में आवश्यकता होने पर केवल दशमलव दिखाने के लिए String.format का उपयोग करना संभव है? उदाहरण के लिए, अगर मैं ऐसा करते हैं:क्या सशर्त दशमलव बिंदु के लिए String.format का उपयोग करना संभव है?

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

स्वरूपित होगा: "1.2222" -> "1.2" "1.000" -> "1.0" आदि,

लेकिन दूसरे मामले में (1.000) मैं इसे सिर्फ "1" वापस करना चाहता हूं। क्या यह String.format के साथ संभव है, या मुझे दशमलव दशमलव का उपयोग करने जा रहा है?

यदि मुझे दशमलव फॉर्मेटर का उपयोग करना है, तो क्या मुझे प्रत्येक प्रकार के प्रारूप के लिए एक अलग दशमलव फोर्मेटर बनाना होगा?

उत्तर

10

नहीं (1 दशमलव स्थान तक, 2 दशमलव स्थानों, आदि के लिए), आप उपयोग करना DecimalFormat है:

final DecimalFormat f = new DecimalFormat("0.##"); 
System.out.println(f.format(1.3)); 
System.out.println(f.format(1.0)); 

रखो के रूप में कई # रों के रूप में आप चाहते हैं; DecimalFormat केवल # एस की संख्या तक, जितना महत्वपूर्ण लगता है उतना अंक प्रिंट करेगा।

3

यह आपको जो मिल रहा है वह आपको मिल सकता है; मुझे आपके अनुरोध की आवश्यकताओं या संदर्भ के बारे में निश्चित नहीं है।

float f; 
f = 1f 
System.out.printf(f==Math.round(f) ? "%d\n" : "%s\n", f); //1 
f = 1.555f 
System.out.printf(f==Math.round(f) ? "%d\n" : "%s\n", f); //1.555 

मुझे जो चाहिए वह बहुत अच्छा काम करता था।

उपरोक्त, System.out.printf (fmt, x) System.out.print (स्ट्रिंग.फॉर्मैट (एफएमटी, एक्स)

की तरह है
संबंधित मुद्दे