Mengubah Format Currency dan Format Rupiah ke dalam Number pada Bahasa Java

Berawal dari lebih dari 1 orang yang nanyain di kotak komentar postingan ini, gw akhirnya bikin dah post ini. Mayan… buat nambah2in isi blog yang agak guna biar ga curcolan mulu isinya…

Singkat cerita, ada yang nanyain gimana cara ngubah format dalam bentuk duit balik lagi ke sifat aslinya (number) biar bisa dioperasiin. Well… buat gw, itu pertanyaan yang bikin gw bingung. Banget! Karena… faktanya, kalau kamu udah punya suatu “a” yang kamu ubah jadi “b”, buat apa kamu ngubah “b” jadi “a”. Toh nilai “a” dari awal udah kamu punya dan nilainya sama sekali ga ketimpa. Beda tipe data gitu… gimana cara isinya bisa ditimpa jadi nilai lain kan yah… Makanya gw bingung.

Tapi apapun itu… ada satu alasan buat para programmer-pemberi-isi-kotak-komentar-di-postingan-asal biar ga ambil lagi nilai awalnya. Dan mereka bingung gimana cara balikinnya. Untuk itu… disinilah gw sebagai pencerah bagi mereka yang kebingungan… Hohoho.

Seperti yang gw tulisin di kotak balasan, ada beberapa langkah yang musti dilakukan:

  1. Parse formatted String ke tipe Number pakai method parse dari objekDecimalFormat
  2. Konversi bentuk Number ke byte/double/float/long/int/short pakai byteValue/doubleValue dst.

Simple kan… buat yang bingung, kodenya gini:

import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.text.ParseException;

public class KurensiIndonesia {

    public static void main(String[] args) {
        double harga = 250000000;

        DecimalFormat kursIndonesia = (DecimalFormat) DecimalFormat.getCurrencyInstance();
        DecimalFormatSymbols formatRp = new DecimalFormatSymbols();

        formatRp.setCurrencySymbol("Rp. ");
        formatRp.setMonetaryDecimalSeparator(',');
        formatRp.setGroupingSeparator('.');

        kursIndonesia.setDecimalFormatSymbols(formatRp);
        String x = kursIndonesia.format(harga);
        System.out.println("Harga Rupiah: "+x);
//konversi balik String --> number type
        try {
            Number number = kursIndonesia.parse(x);
            double nilai = number.doubleValue();
            System.out.println("Nilai dari rupiah: "+String.format("%.2f", nilai));
        } catch (ParseException ex) {
            System.out.println("Kesalahan Parsing");
        }
    }
}

Hasil:

Capture

Contoh kode yang lebih singkat… cuma buat konversi rupiah ke angka itu gini:

import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.text.ParseException;

public class KurensiIndonesia {

    public static void main(String[] args) {

        String x = "Rp. 250.000.000,00";
        DecimalFormat kursIndonesia = (DecimalFormat) DecimalFormat.getCurrencyInstance();
        DecimalFormatSymbols formatRp = new DecimalFormatSymbols();

        formatRp.setCurrencySymbol("Rp. ");
        formatRp.setMonetaryDecimalSeparator(',');
        formatRp.setGroupingSeparator('.');

        kursIndonesia.setDecimalFormatSymbols(formatRp);
        try {
            Number number = kursIndonesia.parse(x);
            double nilai = number.doubleValue();
            System.out.println("Nilai dari rupiah: "+String.format("%.2f", nilai));
        } catch (ParseException ex) {
            System.out.println("Kesalahan Parsing");
        }
    }
}

Intinya, pastiin objek DecimalFormat sama DecimalFormatSymbols yang dibentuk itu sama jenisnya. Gampangnya, objek yang digunain buat nge-format sama nge-parse itu sama. Jangan sampe beda. Kalau beda, ada kemungkinan kamu dapat nilai yang salah bahkan kegagalan eksepsi.

Dan karena banyak yang nanya juga terkait swing dan lainnya… hal di atas gw juga udah coba ke swing (pakai jtextfield biasa) sama akses database (nyimpen ke Access–biar gw ga usah nginstall dbms lagi)…. dan berhasil.

Moga ngebantu urusan kamu masing-masing…

Baca juga: Mengubah nilai double –> rupiah.

Advertisements

One thought on “Mengubah Format Currency dan Format Rupiah ke dalam Number pada Bahasa Java

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s