How do I format a number as currency string?

Creating a financial application requires you to format number as a currency. It should includes the correct thousands separator, decimal separator and the currency symbol. For this purpose you can use the NumberFormat.getCurrencyInstance() method and pass the correct Locale to get the currency format that you want.

package org.kodejava.example.text;

import java.text.NumberFormat;
import java.util.Locale;

public class LocaleCurrencyFormat {
    public static void main(String[] args) {
        Double number = 1500D;

        // Format currency for Canada locale in Canada locale, 
        // the decimal point symbol is a comma and currency
        // symbol is $.
        NumberFormat format = NumberFormat.getCurrencyInstance(Locale.CANADA);
        String currency = format.format(number);
        System.out.println("Currency in Canada : " + currency);

        // Format currency for Germany locale in German locale,
        // the decimal point symbol is a dot and currency symbol
        // is €.
        format = NumberFormat.getCurrencyInstance(Locale.GERMANY);
        currency = format.format(number);
        System.out.println("Currency in Germany: " + currency);
    }
}

Here is an output for the currency format using the Locale.CANADA and Locale.GERMANY.

Currency in Canada : $1,500.00
Currency in Germany: 1.500,00 €

Wayan

Programmer, runner, recreational diver, live in the island of Bali, Indonesia. Mostly programming in Java, Spring Framework, Hibernate / JPA. Support me by donating.

5 Comments

    • This is my code :

      package javaapplication3;
      
      import java.text.DecimalFormat;
      import java.text.DecimalFormatSymbols;
      
      /**
       * @author DONY
       */
      public class JavaApplication3 {
      
          /**
           * @param args the command line arguments
           */
          public static void main(String[] args) {
              String s = "4500";
              double harga = Double.parseDouble(s);
              DecimalFormat df = (DecimalFormat) DecimalFormat.getCurrencyInstance();
              DecimalFormatSymbols dfs = new DecimalFormatSymbols();
              dfs.setCurrencySymbol("");
              dfs.setMonetaryDecimalSeparator(',');
              dfs.setGroupingSeparator('.');
              df.setDecimalFormatSymbols(dfs);
              String k = df.format(harga);
      
              System.out.println("Nilai Rupiah adalah :" + k);
      
          }
      }
      

      If run in command prompt with output : 4.500,00

      I want to display again to value before so from 4.500, –> 4500

      Thank you

      dony

  1. Hi Dony,

    In your code you start with a String variable called s with a value of "4500". You convert the string into double and format it for output using the DecimalFormat and return it as a k variable.

    Now back to your question, do you want to convert the k string back to number again? If yes, you can use the df.parse() method for this conversion. But if you want just to print the original value why don’t you just print the s variable.

    Reply

Leave a Reply