NumberFormat और printf
NumberFormat, DecimalFormat और printf patterns का उपयोग करके प्रदर्शन के लिए संख्याओं को format करें।
NumberFormat और printf, CoddyKit पर Java Academy का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Java Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Java Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
NumberFormat और printf
Java समृद्ध संख्या-प्रारूपण एपीआई उपलब्ध कराता है: स्थान-विशिष्ट मुद्रा और प्रतिशत के लिए NumberFormat, मनचाहे पैटर्न के लिए DecimalFormat, और सी-शैली के प्रारूपण के लिए printf/String.format।
String.format की मूल बातें
String.format() स्ट्रिंग बनाने के लिए प्रारूप विनिर्देशकों का उपयोग करता है। सामान्य विनिर्देशक: %d (पूर्णांक), %f (फ़्लोट), %s (स्ट्रिंग), %n (नई पंक्ति)।
String name = "Alice";
int score = 95;
double avg = 87.567;
String msg = String.format(
"Player: %s | Score: %d | Average: %.2f", name, score, avg);
System.out.println(msg);
// Player: Alice | Score: 95 | Average: 87.57
// printf is equivalent — formats directly to output
System.out.printf("%-10s %5d %8.2f%n", name, score, avg);
// Alice 95 87.57चौड़ाई, पैडिंग और संरेखण
प्रारूप विनिर्देशक चौड़ाई और संरेखण फ़्लैग का समर्थन करते हैं: %10d (10 अक्षरों में दायाँ-संरेखण), %-10d (बायाँ-संरेखण), %010d (शून्य से पैड करना)।
// Table layout with padding
System.out.printf("%-20s %10s %10s%n", "Product", "Qty", "Price");
System.out.printf("%-20s %10d %10.2f%n", "Java Book", 3, 49.99);
System.out.printf("%-20s %10d %10.2f%n", "USB Hub", 1, 24.95);
System.out.printf("%-20s %10d %10.2f%n", "Mechanical Keyboard", 2, 129.00);
// Zero-padding for order IDs
int orderId = 42;
System.out.printf("Order: ORD-%08d%n", orderId); // Order: ORD-00000042मुद्रा के लिए NumberFormat
NumberFormat.getCurrencyInstance(Locale) किसी दिए गए स्थानीय प्रारूप के लिए सही प्रतीक, विभाजक और दशमलव स्थानों के साथ संख्याओं को मुद्रा-स्ट्रिंग के रूप में प्रारूपित करता है।
import java.text.*;
import java.util.*;
NumberFormat usd = NumberFormat.getCurrencyInstance(Locale.US);
NumberFormat eur = NumberFormat.getCurrencyInstance(Locale.GERMANY);
NumberFormat gbp = NumberFormat.getCurrencyInstance(Locale.UK);
double amount = 1234567.89;
System.out.println(usd.format(amount)); // $1,234,567.89
System.out.println(eur.format(amount)); // 1.234.567,89 EUR
System.out.println(gbp.format(amount)); // GBP1,234,567.89प्रतिशत के लिए NumberFormat
NumberFormat.getPercentInstance() किसी दशमलव मान को प्रतिशत-स्ट्रिंग के रूप में प्रारूपित करता है। 0 और 1 के बीच का मान दें।
import java.text.*;
import java.util.*;
NumberFormat pct = NumberFormat.getPercentInstance(Locale.US);
pct.setMaximumFractionDigits(1);
System.out.println(pct.format(0.75)); // 75%
System.out.println(pct.format(0.1234)); // 12.3%
System.out.println(pct.format(1.0)); // 100%
// Conversion rate in e-commerce
double convRate = 3_456.0 / 42_000.0;
System.out.println("Conversion: " + pct.format(convRate)); // 8.2%मनचाहे पैटर्न के साथ DecimalFormat
DecimalFormat एक पैटर्न-स्ट्रिंग का उपयोग करता है, जिसमें # वैकल्पिक अंक और 0 अनिवार्य अंक को दर्शाता है।
import java.text.*;
DecimalFormat df1 = new DecimalFormat("#,###.00");
System.out.println(df1.format(1234567.5)); // 1,234,567.50
DecimalFormat df2 = new DecimalFormat("000.0");
System.out.println(df2.format(7.5)); // 007.5
DecimalFormat df3 = new DecimalFormat("0.00E0");
System.out.println(df3.format(0.000123)); // 1.23E-4
// Scientific notation for large values
DecimalFormat sci = new DecimalFormat("0.000E0");
System.out.println(sci.format(123456789)); // 1.235E8स्ट्रिंग से संख्याओं का पार्स करना
NumberFormat स्थानीय प्रारूप वाली स्ट्रिंग को वापस संख्याओं में पार्स भी कर सकता है। अलग-अलग स्थानीय प्रारूपों में उपयोगकर्ता का इनपुट पढ़ने के लिए यह आवश्यक है।
import java.text.*;
import java.util.*;
NumberFormat nf = NumberFormat.getInstance(Locale.GERMANY);
try {
// German uses comma as decimal separator
Number parsed = nf.parse("1.234,56");
System.out.println(parsed.doubleValue()); // 1234.56
// Parse US currency string
NumberFormat usd = NumberFormat.getCurrencyInstance(Locale.US);
Number amount = usd.parse("$1,234.56");
System.out.println(amount.doubleValue()); // 1234.56
} catch (ParseException e) {
System.out.println("Parse error: " + e.getMessage());
}प्रारूपित स्ट्रिंग (Java 15+)
Java 15+ में String.formatted() को String.format() के विकल्प के रूप में एक उदाहरण-विधि के तौर पर जोड़ा गया है। यह विधि-श्रृंखलाओं और stream प्रसंस्करण-श्रृंखलाओं में उपयोगी है।
record Product(String name, double price, int stock) {}
var products = List.of(
new Product("Laptop", 999.0, 5),
new Product("Mouse", 29.99, 42),
new Product("Monitor", 349.0, 8)
);
products.stream()
.map(p -> "%-15s $%8.2f [stock: %d]"
.formatted(p.name(), p.price(), p.stock()))
.forEach(System.out::println);
// Laptop $ 999.00 [stock: 5]
// Mouse $ 29.99 [stock: 42]
// Monitor $ 349.00 [stock: 8]संख्या समूहकरण और स्थानीय प्रारूप
संख्या समूहकरण (हज़ारों का विभाजक) स्थानीय प्रारूप के अनुसार बदलता है। उपयोगकर्ता को दिखने वाले परिणामों के लिए अल्पविरामों को स्थायी रूप से लिखने के बजाय हमेशा NumberFormat का उपयोग करें।
import java.text.*;
import java.util.*;
long users = 1_234_567;
for (Locale locale : new Locale[]{Locale.US, Locale.FRANCE, Locale.GERMANY}) {
NumberFormat nf = NumberFormat.getIntegerInstance(locale);
System.out.printf("%-10s: %s%n", locale, nf.format(users));
}
// en_US : 1,234,567
// fr_FR : 1 234 567
// de_DE : 1.234.567चालान बनाने का उदाहरण
सभी बातों को मिलाकर: सही मुद्रा, प्रतिशत और तालिका-संरेखण के साथ प्रारूपित चालान का प्रिंट तैयार करना।
import java.text.*;
import java.util.*;
NumberFormat curr = NumberFormat.getCurrencyInstance(Locale.US);
NumberFormat pct = NumberFormat.getPercentInstance();
pct.setMaximumFractionDigits(0);
double subtotal = 1259.97;
double discount = 0.10;
double discountAmt = subtotal * discount;
double taxRate = 0.08;
double taxAmt = (subtotal - discountAmt) * taxRate;
double total = subtotal - discountAmt + taxAmt;
System.out.println("=== INVOICE ===");
System.out.printf("%-20s %15s%n", "Subtotal", curr.format(subtotal));
System.out.printf("%-20s %15s%n", "Discount (" + pct.format(discount) + ")",
"-" + curr.format(discountAmt));
System.out.printf("%-20s %15s%n", "Tax (" + pct.format(taxRate) + ")",
curr.format(taxAmt));
System.out.printf("%-20s %15s%n", "TOTAL", curr.format(total));सामान्य गलतियाँ
इन सामान्य प्रारूपण-सम्बन्धी गलतियों से सावधान रहें:
- गलत प्रकार विनिर्देशक के साथ
String.formatका उपयोग करने पर (जैसेdoubleके लिए%d)IllegalFormatConversionExceptionउत्पन्न होता है - स्थानीय प्रारूप पर निर्भर प्रारूपक अलग-अलग मशीनों पर अलग परिणाम उत्पन्न करते हैं
- NumberFormat उदाहरण थ्रेड-सुरक्षित नहीं होते — प्रत्येक थ्रेड के लिए एक बनाएँ या
ThreadLocalका उपयोग करें
// Wrong specifier
try {
String.format("%d", 3.14); // IllegalFormatConversionException
} catch (java.util.IllegalFormatConversionException e) {
System.out.println("Wrong format specifier!");
}
// Thread-safe pattern using ThreadLocal
ThreadLocal<NumberFormat> localFmt = ThreadLocal
.withInitial(() -> NumberFormat.getCurrencyInstance(Locale.US));
// each thread gets its own NumberFormat instanceत्वरित जाँच
String.format("%08.2f", 3.5) का परिणाम क्या होगा?
पुनरावलोकन: NumberFormat और printf
मुख्य बातें:
- String.format / printf प्रारूप विनिर्देशकों का उपयोग करते हैं: %d, %f, %s, %.2f
- चौड़ाई और संरेखण फ़्लैग: %10d (दायाँ), %-10d (बायाँ), %010d (शून्य से पैड करना)
- स्थानीय प्रारूप के अनुसार मुद्रा दिखाने के लिए NumberFormat.getCurrencyInstance()
- प्रतिशत परिणाम के लिए NumberFormat.getPercentInstance()
- DecimalFormat # (वैकल्पिक) और 0 (अनिवार्य) अंक-पैटर्न का उपयोग करता है
- NumberFormat स्थानीय प्रारूप वाली स्ट्रिंग को वापस संख्याओं में पार्स भी कर सकता है
एआई शिक्षक के साथ Java सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 104
- पाठ
- 374
अक्सर पूछे जाने वाले प्रश्न
क्या “NumberFormat और printf” पाठ निःशुल्क है?
हाँ—“NumberFormat और printf” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Java Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Java Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“NumberFormat और printf” में मैं क्या सीखूँगा?
NumberFormat, DecimalFormat और printf patterns का उपयोग करके प्रदर्शन के लिए संख्याओं को format करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Java Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Java Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Java Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।
“NumberFormat और printf” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Java Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Java Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- Math class की आवश्यक बातें
- Integer Arithmetic और Overflow
- वित्तीय गणनाओं के लिए BigDecimal
- NumberFormat और printf