Class NumberFormat dapat digunakan untuk memformat angka sesuai dengan lokasi spesifik. Class ini adalah class abstract yang terdapat pada package java.text, dan merupakan class dasar untuk semua pemformatan angka-angka.NumberFormat menyediakan interface untuk memformat dan melakukan parse angka,sehingga kode pemrograman dapat benar-benar bebas untuk melakukan konvensi lokal untuk titik desimal, pemisah ribuan, atau bahkan digit desimal tertentu yang digunakan.
Baca juga : BigInteger Class
Untuk mendapatkan instance dari class ini, maka anda harus memanggil method :
- getInstance(), atau
- getNumberInstance()
Syntax untuk method tersebut adalah:
- public static NumberFormat getNumberInstance(Locale locale)
- public static NumberFormat getInstance(Locale locale)
Contoh:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
import java.text.NumberFormat; import java.util.Locale; public class NumberFormatID { public static void main(String[] args) { double nilai = 453657.7867; // Default locale printFormatted(Locale.getDefault(), nilai); // Indonesia locale Locale indonesiaLocale = new Locale("id", "ID"); printFormatted(indonesiaLocale, nilai); } public static void printFormatted(Locale locale, double nilai) { // Dapatkan format angka dan mata uang NumberFormat formatAngka = NumberFormat.getInstance(locale); NumberFormat formatMataUang = NumberFormat.getCurrencyInstance(locale); System.out.println("Nilai format: " + nilai + " for locale: " + locale); System.out.println("Angka: " + formatAngka.format(nilai)); System.out.println("Mata uang: " + formatMataUang.format(nilai)); } } |
Output:
Nilai format: 453657.7867 for locale: en_US
Angka: 453,657.787
Mata uang: $453,657.79
Nilai format: 453657.7867 for locale: in_ID
Angka: 453.657,787
Mata uang: Rp453.657,79
Pada kode di atas, nilai double pada variabel d diformat sesuai dengan lokasi spesifik, yaitu Amerika, dan Indonesia
Jika anda akan melakukan berbagai format terhadap angka-angka, sebaiknya anda menggunakan loop seperti contoh berikut ini:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
import java.text.NumberFormat; public class TestNumberFormat2 { public static void main(String[] args) { double myArray [] = new double [10]; //Membuat array dengan angka random System.out.println("Angka random tipe double antara 1 dan 10000"); for (int i = 0; i < myArray.length; i++){ myArray[i] = Math.random() * 10000 + 1; System.out.println("Index " + (i + 1) +": " + myArray[i]); } System.out.println(); NumberFormat formatA = NumberFormat.getInstance(); tampilkanFormat(myArray, "default", formatA); NumberFormat formatB = NumberFormat.getInstance(); formatB.setMinimumFractionDigits(2); formatB.setMaximumFractionDigits(4); tampilkanFormat(myArray, "Fraksi digit min 2, Fraksi digit max 4", formatB); NumberFormat formatC = NumberFormat.getInstance(); formatC.setMinimumIntegerDigits(6); tampilkanFormat(myArray, "digit int min 6", formatC); NumberFormat formatD = NumberFormat.getInstance(); formatD.setMaximumIntegerDigits(5); tampilkanFormat(myArray, "digit int max 5", formatD); NumberFormat formatE = NumberFormat.getInstance(); formatE.setGroupingUsed(false); tampilkanFormat(myArray, "set grouping used ", formatE); } //Method untuk menampilkan format static void tampilkanFormat(double array [], String tipeFormat, NumberFormat numberFormat){ System.out.println("Format: " + tipeFormat); for (int i = 0; i < array.length; i++){ System.out.println("Index " + (i + 1) +": " + numberFormat.format(array[i])); } System.out.println(); } } |
Contoh output:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
Angka random tipe double antara 1 dan 10000 Index 1: 8166.577506154228 Index 2: 2320.132528799088 Index 3: 439.5074246403331 Index 4: 8230.89888184325 Index 5: 3940.6629139853244 Index 6: 9686.544706925479 Index 7: 5932.8425465733335 Index 8: 6228.867727680574 Index 9: 6982.770634111797 Index 10: 6209.420453657998 Format: default Index 1: 8,166.578 Index 2: 2,320.133 Index 3: 439.507 Index 4: 8,230.899 Index 5: 3,940.663 Index 6: 9,686.545 Index 7: 5,932.843 Index 8: 6,228.868 Index 9: 6,982.771 Index 10: 6,209.42 Format: Fraksi digit min 2, Fraksi digit max 4 Index 1: 8,166.5775 Index 2: 2,320.1325 Index 3: 439.5074 Index 4: 8,230.8989 Index 5: 3,940.6629 Index 6: 9,686.5447 Index 7: 5,932.8425 Index 8: 6,228.8677 Index 9: 6,982.7706 Index 10: 6,209.4205 Format: digit int min 6 Index 1: 008,166.578 Index 2: 002,320.133 Index 3: 000,439.507 Index 4: 008,230.899 Index 5: 003,940.663 Index 6: 009,686.545 Index 7: 005,932.843 Index 8: 006,228.868 Index 9: 006,982.771 Index 10: 006,209.42 Format: digit int max 5 Index 1: 8,166.578 Index 2: 2,320.133 Index 3: 439.507 Index 4: 8,230.899 Index 5: 3,940.663 Index 6: 9,686.545 Index 7: 5,932.843 Index 8: 6,228.868 Index 9: 6,982.771 Index 10: 6,209.42 Format: set grouping used false Index 1: 8166.578 Index 2: 2320.133 Index 3: 439.507 Index 4: 8230.899 Index 5: 3940.663 Index 6: 9686.545 Index 7: 5932.843 Index 8: 6228.868 Index 9: 6982.771 Index 10: 6209.42 |
Melakukan Format Terhadap Nilai Mata Uang
Untuk melakukan format terhadap nilai mata uang dan angka persentase, anda bisa menggunakan method getCurrencyInstance() dan method getPercentInstance(), seperti contoh berikut ini melakukan format secara default:
Output:
Saldo awal $1,500.00 dengan bunga 7% totalnya menjadi $1,605.00
Beberapa hal yang perlu diingat ketika akan menambahkan ‘koma’ pada angka adalah:
- Anda bisa menggunakan class NumberFormat atau DecimalFormat untuk melakukan pengelompokan dan menampilkan koma diantara digit-digit angka
- Anda bisa menggunakan method NumberFormat.setGroupingUsed(true), method ini akan mem-passing argumen true sehingga pengelompokan dilakukan.
- Secara default pengelompokkan adalah tiga digit, contohnya 10000000 di kelompokkan menjadi 10,000,000. Artinya, tanda koma akan dimasukkan setelah tiga digit dari kanan dan hanya pada bagian integer saja dari angka tersebut.
- Untuk menambah ukuran pengelompokkan atau grouping tersebut, anda bisa menggunakan method setGroupingSize(size) dari class DecimalFormat. Misalnya setGroupingSize(5), maka akan menampilkan koma setelah setiap lima digit dimulai dari titik desimal ke kiri.
Leave a Reply