Monday 3 July 2017

Format currency in Java

Sample code to format currency in java
package com.kishore.samples;

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

/**
 * * How to format Number to different currency in Java. Following Java program
 * * will show you, how you can display double value in different currency e.g.
 * * USD, GBP and JPY. This example show price in multiple currency. 
 */
public class CurrencyFormater {
    public static void main(String args[]) {
        double price = 100.25;
        showPriceInUSD(price, getExchangeRate("USD"));
        showPriceInGBP(price, getExchangeRate("GBP"));
        showPriceInJPY(price, getExchangeRate("JPY"));
    }

    /** * Display price in US Dollar currency * * @param price * @param rate */
    public static void showPriceInUSD(double price, double rate) {
        double priceInUSD = price * rate;
        NumberFormat currencyFormat = NumberFormat
                .getCurrencyInstance(Locale.US);
        System.out.printf("Price in USD : %s %n",
                currencyFormat.format(priceInUSD));
    }

    /** * Display prince in British Pound * * @param price * @param rate */
    public static void showPriceInGBP(double price, double rate) {
        double princeInGBP = price * rate;
        NumberFormat GBP = NumberFormat.getCurrencyInstance(Locale.UK);
        System.out.printf("Price in GBP : %s %n", GBP.format(princeInGBP));
    }

    /** * Display prince in Japanese Yen * * @param price * @param rate */
    public static void showPriceInJPY(double price, double rate) {
        double princeInJPY = price * rate;
        NumberFormat currency = NumberFormat.getCurrencyInstance(Locale.JAPAN);
        System.out.printf("Price in JPY : %s %n", currency.format(princeInJPY));
    }

    /** * @return FX exchange rate for USD * @param currency */
    public static double getExchangeRate(String currency) {
        switch (currency) {
        case "USD":
            return 1;
        case "JPY":
            return 102.53;
        case "GBP":
            return 0.60;
        case "EURO":
            return 0.73;
        default:
            throw new IllegalArgumentException(String.format(
                    "No rates available for currency %s %n", currency));
        }
    }
}

Output:

Price in USD : $100.25 
Price in GBP : £60.15 
Price in JPY : ?10,279 


No comments :

Post a Comment