PHP menyediakan beberapa fungsi bawaan untuk memformat tampilan angka. Dalam tutorial belajar PHP kali ini kita akan membahas salah satunya, yakni fungsi number_format(). Fungsi ini juga bisa digunakan untuk menformat angka agar sesuai dengan penulisan mata uang rupiah.
Pengertian Fungsi number_format
Fungsi number_format() adalah fungsi bawaan PHP yang bisa digunakan untuk memformat tampilan angka, baik itu angka integer maupun float. Dengan memformat tampilan angka, akan membuatnya lebih cantik dan mudah dibaca. Selain itu fungsi ini juga akan membulatkan atau menambahkan angka "0" di belakang koma jika dibutuhkan.
Fungsi number_format() memiliki 2 cara penulisan, yakni dengan 2 argumen atau 4 argumen. Untuk fungsi dengan 2 argumen, berikut format dasar penulisannya:
string number_format ( float $number [, int $decimals = 0 ] )
- Hasil akhir fungsi ini bertipe string.
- Argumen pertama ($number) membutuhkan input nilai angka yang akan diformat. Argumen ini bertipe float, tapi bisa juga bisa diisi dengan nilai integer.
- Argumen kedua ($decimals) bersifat opsional. Argumen ini menentukan berapa jumlah angka desimal (angka di belakang koma) yang dibutuhkan. Apabila tidak diisi, dianggap sebagai 0.
Langsung saja kita lihat contoh penggunaan fungsi number_format() ini:
<?php $angka = 1999.12345; $angka_format = number_format($angka); echo $angka_format; // 1,999 ?>
Dapat terlihat, fungsi number_format() akan "membuang" seluruh bagian desimal dari angka diatas. Ini terjadi karena secara default fungsi ini menggunakan 0 sebagai jumlah digit desimal (angka di belakang koma).
Sebenarnya fungsi number_format() tidak benar-benar "membuang" nilai desimal, tetapi membulatkannya seperti contoh berikut:
<?php $angka = 1999.99; $angka_format = number_format($angka); echo $angka_format; // 2,000 ?>
Hasilnya, nilai 1999.99 akan dibulatkan menjadi 2,000.
Dengan menambahkan argumen kedua, kita bisa menentukan jumlah digit desimal yang diperlukan:
<?php $angka = 1999.888; $angka_format = number_format($angka,2); echo $angka_format; // 1,999.89 ?>
Kali ini fungsi number_format() dibatasi dengan 2 digit desimal. Selain itu dapat anda lihat bahwa fungsi ini juga membulatkan nilai desimalnya.
Bagaimana jika angka awal tidak tidak memiliki angka desimal? Mari kita coba:
<?php $angka = 1999; $angka_format = number_format($angka,3); echo $angka_format; // 1,999.000 ?>
Hasilnya, string akhir akan ditambah angka "0" pada bagian desimal. Dengan demikian kita bisa membuat format angka dengan panjang seragam.
Perhatikan juga bahwa PHP tetap menggunakan tanda koma " , " sebagai pemisah nilai ribuan, dan titik " . " sebagai pemisah nilai pecahan. Ini adalah aturan penulisan di Amerika. Nantinya, dengan fungsi number_format() kita juga bisa mengubah format ini agar sesuai dengan aturan penulisan angka di Indonesia, dimana tanda titik digunakan sebagai pemisah ribuan, dan tanda koma sebagai pemisah nilai pecahan.
Bentuk penulisan lain dari fungsi number_format()
butuh 4 argument. Berikut format dasar penulisannya:
string number_format ( float $number , int $decimals = 0 , string $dec_point = "." , string $thousands_sep = "," )
Format penulisan diatas terlihat rumit, namun sebenarnya cukup sederhana. Argumen ketiga dan keempat fungsi number_format() digunakan untuk menentukan karakter apa sebagai pemisah nilai ribuan dan nilai desimal.
Sebagai contoh, karena di Indonesia kita menggunakan karakter titik sebagai pemisah angka ribuan dan karakter koma sebagai pemisah desimal, saya bisa memformat angka tersebut dengan fungsi number_format(), seperti contoh berikut:
<?php $angka = 1999.12345; $angka_format = number_format($angka,2,",","."); echo $angka_format; // 1.999,12 ?>
Dapat terlihat sekarang, angka akan ditampilkan dalam format umum yang kita gunakan sehari-hari. Lebih jauh lagi, kita bisa menambahkan string "Rp. " sebagai awalan agar hasilnya pas untuk nilai mata uang rupiah. Berikut contohnya:
<?php $angka = 3050145.756; $angka_format = number_format($angka,2,",","."); echo "Rp. ".$angka_format; // Rp. 3.050.145,76 ?>
Dalam kode diatas saya menyambungkan awal "Rp. " dengan string hasil fungsi number_format(). Tampilan tersebut cocok digunakan untuk hasil akhir angka mata uang untuk membuat laporan yang banyak melibatkan nilai uang.
Dalam tutorial PHP kali ini kita telah membahas salah satu fungsi praktis untuk memformat angka. Fungsi number_format() akan sering anda gunakan untuk mempercantik hasil akhir program yang melibatkan angka.
gan, mau tanya gimana cara membuat format angka, tapi tidak boleh menggunakan function formatting?
makasih.
Kenapa g boleh gan? untuk tugas ya? hehe…
Kalau seperti cukup panjang jalannya, agan bisa menggunakan perulangan, cek apakah digitnya sudah lebih dari 3, jika iya, tambahkan angka pemisah, dst.
Saran saya sih coba dibuat sendiri, soalnya ini melatih logika dan kemampuan algoritma.
<?php
$angka = 3050145.756;
$angka_format = number_format($angka,2,",",".");
echo "Rp. ".$angka_format;
// Rp. 3.050.145,76
?>
Gan sya pake script ini berhasil
Ketika saya jumlahkan dengan hasil yg sma 6.100.290,00 tpi kenapa beda ya ketika sya jumlahkan lewat kalkulator windows
Hasilny 6.100.291,00
Sblmny trima kasih ya ilmuny gan hehe:)
Ada perbedaan pembulatan tuh gan.. Kadang di bahasa pemrograman memang seperti ini (tidak PHP saja). Istilah programmingnya "rounding error".
Juga tergantung bagaimana cara agan membuat kode programnya. Misalnya kalau seperti ini, hasilnya sama seperti di kalkulator Windows:
<?php
$angka = 3050145.756*2;
$angka_format = number_format($angka,2,",",".");
echo "Rp. ".$angka_format;
// Rp. 6.100.291,51
?>
biar ga di bulatin gmna gan ?
Gan, ane anda angka yang valuenya Rp. 10.000
itu data dari postnya, mau ane simpen ke database pake format 10000 gimana convertnya ya ?
Jadi dibalik gitu fungsinya
Agak susah nih gan, mesti lihat dulu pola angkanya gimana, apakah pasti selalu pakai awalan "Rp." dan menggunakan tanda titik sebagai pemisah angka ribuan. Jika iya kita bisa potong 3 digit awal untuk membuang karakter "Rp.", kemudian bisa pakai regular expression untuk membuang tanda titik di string tersebut.
nah ia itu gan, angkanya uda pasti ada Rp.
Contoh : Rp. 10.000, Rp. 100, Rp. 10.000.000
Formatnya uda pasti begitu gan, nah proses penyimpanan ke database kan harus int, ngerubah value nya gimana ya ?
Bisa seperti ini gan:
<?php
$harga = "Rp. 40.000.000";
$harga = substr($harga,3);
$harga = str_replace(".","",$harga);
$harga = (int) $harga;
var_dump($harga) // int(40000000)
?>
agan, gimana ya cara nambah titik di antara angka , kayak di tulis 40000 otomatis di tampilannya 40.000
(supaya gak susah liatnya) , tapi di database tetap terbaca 40000, maap newbie, mohon bantuannya. :)
Ketika angkanya mau ditampilkan, pakai fungsi number_format() ini gan. Yang di database biarkan saja seperti itu.
Gan Gimana Kalau Angka komanya tidak di bukatkan?
Misalnya 1,928.89
Bisa gak?
Kalau tidak mau dibulatkan, argumen kedua dari fungsi number_format() bisa diganti dengan angka yang lebih besar, misalnya:
<?php
$angka = 1999.1234567;
$angka_format = number_format($angka,10);
echo $angka_format;
// 1,999.1234567000
?>
misalnya 201.646,91
gimana
Mau Nanya Suhu…. Bagaimana Merubah Angka Negatif Jadi format kurung seperti excel gitu….
contoh -1000 menjadi (1000)… Terimakasih
Sepertinya tidak ada cara yang otomatis, setiap angka harus di konversi manual, misalnya menggunakan kode ini:
<?php
$angka = -1000;
echo ($angka < 0 ? "(".abs($angka).")" : $angka);
?>
paginationcomment / cara buat kolom page number halaman gmn yah ??
Saat ini tutorialnya belum ada, dan bisa cukup panjang karena akan melibatkan database juga.
bang biar pas di input ke database komanya ilang gmna yah ? kan format_number cmn buat nampilin agar terlihat rapih….. terima kasih
Cara inputnya seperti apa? Kalau dari form, bisa di buat proses validasi dulu setelah form di submit. Yakni jika angka yang diinput mengandung koma atau titik (atau bahkan karakter), tampilkan pesan error. Jadi yang bisa diinput hanya angka saja.
Kalau misal dibulatkan 3 angka dibelakang koma kan gini 3.457.021,400, saya maunya angka 0 dibelakang 4 tidak ada gimana ya mas? jadi 3.457.021,4
maaf gan, saya baru mempelajari php, saya bingung, apa ada cara untuk "menghilangkan" angka di belakang koma, tanpa mempengaruhi angka di depan koma, misal :
43,9 jadi 43
1,5 jadi 1
12,9 jadi 12
7,5 jadi 7
0,4 jadi 0
0,6 jadi 0
tanpa mempengaruhi angka di depan'nya gan, apa ada rumus'nya???
Untuk keperluan ini bisa pakai fungsi floor() yang akan membulatkan angka ke bawah. Misalnya echo floor(5.8) hasilnya 5.
Gan gimana yah caranya buat menetapkan angka pas gitu. Contohnya kau mau masukan nilai nih tapi gak boleh lebih dari seratus dan min gk bisa digunain. Gmna tu gan
gan mau tanya ubah 0.23 menjadi 0,23 gimana..??
Gan . Gimana caranya supaya mempertahankan hasil penampilan dari 0.00000001 x 2 = 0.00000002.
Tidak 2.0E-8
terima kasih
Permisi, Om Admin..
Mau bertanya nih, bagaimana sih caranya memformat tampilan nomor telepon ketika mengisi form isian nomor di HTML. misal dari 081234567890 tampil menjadi 0812.3456.7890. sedangkan yang ditangkap database tetap (081234567890). Terima kasih
Untuk yang seperti itu harus menggunakan JavaScript.
Nanti bisa dibuat dari event oninput dan regular expression untuk menambah karakter titik setiap 4 digit. Kemudian difilter lagi saat form di submit untuk menghilangkan tambahan titik tadi (agar tidak ikut ke database).
izin save bang, sangat bermanfaat
saya ingin bertanya, bagaimana cara membuat perhitungan angka yang hasilnya mines menjadi gagal/muncul alert error
Itu bagiannya materi validasi form. Untuk materi dasar bisa ke sini: https://www.duniailkom.com/tutorial-form-php-cara-membuat-validasi-form-php-fungsi-isset-dan-empty/
Disitu memang baru pemeriksaan ada nilai atau tidak ada nilai saja. Silahkan dimodifikasi lebih lanjut untuk pemeriksaan angka.
ijin tanya bang, di PHP 8.
Pesan: number_format(): Meneruskan null ke parameter #1 ($num) dari tipe float tidak digunakan lagi.
ini bagaimana solusinya bang???
Harus lihat kodenya juga nih, tapi sepertinya ada variabel yang nilainya berisi angka null (tidak berisi nilai)