Custom Pattern Creation
import java.text.DecimalFormat;
public class CustomPatternDemo {
public static void main(String[] args) {
// Scientific notation formatting
DecimalFormat scientificFormat = new DecimalFormat("0.###E0");
double largeNumber = 1234567.89;
System.out.println("Scientific: " + scientificFormat.format(largeNumber));
// Custom engineering notation
DecimalFormat engineeringFormat = new DecimalFormat("##0.###E0");
System.out.println("Engineering: " + engineeringFormat.format(largeNumber));
}
}
Internationalization Techniques
Handling Multiple Locales
import java.text.NumberFormat;
import java.util.Locale;
public class MultiLocaleFormattingDemo {
public static void main(String[] args) {
double amount = 1234567.89;
Locale[] locales = {
Locale.US,
Locale.FRANCE,
Locale.GERMANY,
Locale.JAPAN
};
for (Locale locale : locales) {
NumberFormat currencyFormat = NumberFormat.getCurrencyInstance(locale);
System.out.println(locale + ": " + currencyFormat.format(amount));
}
}
}
Complexity Level |
Technique |
Use Case |
Basic |
Simple pattern |
Standard number display |
Intermediate |
Locale-specific |
International applications |
Advanced |
Custom parsing |
Complex financial systems |
graph TD
A[Formatting Performance] --> B{Formatting Method}
B --> |DecimalFormat| C[High Flexibility]
B --> |NumberFormat| D[Moderate Performance]
B --> |String.format()| E[Quick but Less Efficient]
Precision and Rounding Techniques
import java.math.RoundingMode;
import java.text.DecimalFormat;
public class PrecisionRoundingDemo {
public static void main(String[] args) {
DecimalFormat preciseFormat = new DecimalFormat("#.##");
preciseFormat.setRoundingMode(RoundingMode.HALF_UP);
double[] numbers = {3.14159, 2.71828, 1.41421};
for (double num : numbers) {
System.out.println("Rounded: " + preciseFormat.format(num));
}
}
}
Advanced Error Handling
import java.text.NumberFormat;
import java.text.ParseException;
public class SafeFormattingDemo {
public static void main(String[] args) {
try {
NumberFormat format = NumberFormat.getInstance();
Number parsedNumber = format.parse("1,234.56");
System.out.println("Parsed Value: " + parsedNumber.doubleValue());
} catch (ParseException e) {
System.err.println("Formatting error: " + e.getMessage());
}
}
}
Key Advanced Techniques
- Dynamic pattern generation
- Locale-aware formatting
- Performance optimization
- Robust error handling
At LabEx, we recommend mastering these advanced techniques to create sophisticated and reliable number formatting solutions in Java applications.