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

Java Number Formatting

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:

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:

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"
    }
}
  • Formatting currencies:

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"
    }
}
  • Formatting percentages:

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.

  1. 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);
    
  2. Formatting currency in Java:

    • Using NumberFormat to format currency:
    double amount = 12345.67;
    NumberFormat currencyFormat = NumberFormat.getCurrencyInstance();
    String formattedCurrency = currencyFormat.format(amount);
    
  3. Java NumberFormat example:

    • Example of using NumberFormat to format a number:
    double value = 9876543.21;
    NumberFormat numberFormat = NumberFormat.getInstance();
    String formattedNumber = numberFormat.format(value);
    
  4. Custom number formatting in Java:

    • Customizing number formatting with DecimalFormat patterns:
    double number = 12345.6789;
    DecimalFormat df = new DecimalFormat("###,###.##");
    String formatted = df.format(number);
    
  5. Formatting integers and decimals in Java:

    • Formatting integers and decimals using 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);
    
  6. Localization and number formatting in Java:

    • Localizing number formatting for different locales:
    double value = 9876543.21;
    NumberFormat localizedFormat = NumberFormat.getInstance(Locale.FRENCH);
    String formattedValue = localizedFormat.format(value);
    
  7. Java NumberFormat patterns:

    • NumberFormat patterns in DecimalFormat allow you to define custom formatting:
    double number = 12345.6789;
    DecimalFormat customFormat = new DecimalFormat("#,##0.00");
    String formatted = customFormat.format(number);
    
  8. Formatting scientific notation in Java:

    • Formatting numbers in scientific notation using DecimalFormat:
    double value = 1.23456789E10;
    DecimalFormat scientificFormat = new DecimalFormat("0.###E0");
    String formattedScientific = scientificFormat.format(value);
    
  9. Java String to formatted number:

    • Converting a formatted string back to a number:
    String formattedNumber = "12,345.67";
    DecimalFormat df = new DecimalFormat("#,##0.00");
    Number parsedNumber = df.parse(formattedNumber);
    
  10. Java NumberFormat currency symbols:

    • Using NumberFormat to format currency with specific symbols:
    double amount = 12345.67;
    NumberFormat currencyFormat = NumberFormat.getCurrencyInstance(Locale.US);
    String formattedCurrency = currencyFormat.format(amount);
    
  11. Rounding and precision in Java number formatting:

    • Controlling rounding and precision in number formatting with DecimalFormat:
    double number = 12345.6789;
    DecimalFormat df = new DecimalFormat("#,##0.000");
    String formatted = df.format(number);
    
  12. Formatting numbers with commas in Java:

    • Formatting numbers with commas using NumberFormat:
    double value = 9876543.21;
    NumberFormat commaFormat = NumberFormat.getNumberInstance();
    String formattedWithCommas = commaFormat.format(value);