Java Tutorial
Operators
Flow Control
String
Number and Date
Built-in Classes
Array
Class and Object
Inheritance and Polymorphism
Exception Handling
Collections, Generics and Enumerations
Reflection
Input/Output Stream
Annotation
In Java, you can use the java.text
package to format numbers in various ways, including the NumberFormat
and DecimalFormat
classes. In this tutorial, we will cover the basics of formatting numbers in Java using these classes, along with some examples.
NumberFormat
is an abstract class that provides a generic way to format and parse numbers. You can use the getInstance()
, getNumberInstance()
, getCurrencyInstance()
, or getPercentInstance()
static methods to obtain a NumberFormat
instance for a specific purpose.
Example:
import java.text.NumberFormat; import java.util.Locale; public class Main { public static void main(String[] args) { double number = 1234567.891; NumberFormat numberFormat = NumberFormat.getNumberInstance(Locale.US); String formattedNumber = numberFormat.format(number); System.out.println(formattedNumber); // Output: "1,234,567.891" } }
DecimalFormat
is a subclass of NumberFormat
that provides more control over the formatting process. You can create a DecimalFormat
instance with a custom pattern or use one of the predefined patterns.
Example:
import java.text.DecimalFormat; public class Main { public static void main(String[] args) { double number = 1234567.891; DecimalFormat decimalFormat = new DecimalFormat("#,###.00"); String formattedNumber = decimalFormat.format(number); System.out.println(formattedNumber); // Output: "1,234,567.89" } }
You can use the getCurrencyInstance()
method to obtain a NumberFormat
instance for formatting currency values. The NumberFormat
instance will automatically use the appropriate currency symbol and formatting rules for the specified locale.
Example:
import java.text.NumberFormat; import java.util.Locale; public class Main { public static void main(String[] args) { double currencyAmount = 1234567.89; NumberFormat currencyFormat = NumberFormat.getCurrencyInstance(Locale.US); String formattedCurrency = currencyFormat.format(currencyAmount); System.out.println(formattedCurrency); // Output: "$1,234,567.89" } }
You can use the getPercentInstance()
method to obtain a NumberFormat
instance for formatting percentage values. The NumberFormat
instance will automatically apply the appropriate percentage formatting rules for the specified locale.
Example:
import java.text.NumberFormat; import java.util.Locale; public class Main { public static void main(String[] args) { double percentage = 0.891; NumberFormat percentFormat = NumberFormat.getPercentInstance(Locale.US); String formattedPercentage = percentFormat.format(percentage); System.out.println(formattedPercentage); // Output: "89%" } }
This tutorial introduced the basics of formatting numbers in Java using the NumberFormat
and DecimalFormat
classes, including formatting general numbers, currencies, and percentages. Properly formatting numbers is essential for creating user-friendly applications, and understanding how to use these classes effectively will help you write cleaner and more efficient code.
Java DecimalFormat class:
DecimalFormat
is a class in Java that extends NumberFormat
and allows you to format decimal numbers with custom patterns.double number = 12345.6789; DecimalFormat df = new DecimalFormat("#,##0.00"); String formatted = df.format(number);
Formatting currency in Java:
NumberFormat
to format currency:double amount = 12345.67; NumberFormat currencyFormat = NumberFormat.getCurrencyInstance(); String formattedCurrency = currencyFormat.format(amount);
Java NumberFormat example:
NumberFormat
to format a number:double value = 9876543.21; NumberFormat numberFormat = NumberFormat.getInstance(); String formattedNumber = numberFormat.format(value);
Custom number formatting in Java:
DecimalFormat
patterns:double number = 12345.6789; DecimalFormat df = new DecimalFormat("###,###.##"); String formatted = df.format(number);
Formatting integers and decimals in Java:
NumberFormat
:int intValue = 12345; double doubleValue = 12345.6789; NumberFormat intFormat = NumberFormat.getIntegerInstance(); NumberFormat doubleFormat = NumberFormat.getInstance(); String formattedInt = intFormat.format(intValue); String formattedDouble = doubleFormat.format(doubleValue);
Localization and number formatting in Java:
double value = 9876543.21; NumberFormat localizedFormat = NumberFormat.getInstance(Locale.FRENCH); String formattedValue = localizedFormat.format(value);
Java NumberFormat patterns:
DecimalFormat
allow you to define custom formatting:double number = 12345.6789; DecimalFormat customFormat = new DecimalFormat("#,##0.00"); String formatted = customFormat.format(number);
Formatting scientific notation in Java:
DecimalFormat
:double value = 1.23456789E10; DecimalFormat scientificFormat = new DecimalFormat("0.###E0"); String formattedScientific = scientificFormat.format(value);
Java String to formatted number:
String formattedNumber = "12,345.67"; DecimalFormat df = new DecimalFormat("#,##0.00"); Number parsedNumber = df.parse(formattedNumber);
Java NumberFormat currency symbols:
NumberFormat
to format currency with specific symbols:double amount = 12345.67; NumberFormat currencyFormat = NumberFormat.getCurrencyInstance(Locale.US); String formattedCurrency = currencyFormat.format(amount);
Rounding and precision in Java number formatting:
DecimalFormat
:double number = 12345.6789; DecimalFormat df = new DecimalFormat("#,##0.000"); String formatted = df.format(number);
Formatting numbers with commas in Java:
NumberFormat
:double value = 9876543.21; NumberFormat commaFormat = NumberFormat.getNumberInstance(); String formattedWithCommas = commaFormat.format(value);