Hasil perhitungan yang akurat tetap percuma bila ditampilkan berantakan: angka desimal 16 digit di tabel laporan, atau label yang tidak tersusun rapi. MATLAB menyediakan dua lapis pengendalian tampilan: perintah format yang mengatur gaya tampilan Command Window secara global, dan keluarga disp/fprintf/sprintf yang memformat output baris demi baris. Chapter ini menuntaskan keduanya — dari memilih jumlah digit hingga menyusun laporan yang rapi.
Perintah format di Command Window #
Secara default, Command Window menampilkan bilangan double dengan format short — sekitar 5 digit signifikan. Perintah format mengubah gaya tampilan ini untuk seluruh sesi:
>> format short
>> pi
ans =
3.1416Tabel berikut merangkum varian yang paling sering dipakai, dengan tampilan nilai pi sebagai pembanding:
| Perintah | Tampilan pi | Kegunaan |
|---|---|---|
format short | 3.1416 | default, 5 digit signifikan |
format long | 3.141592653589793 | 15 digit, pemeriksaan presisi |
format shortE | 3.1416e+00 | notasi ilmiah ringkas |
format longE | 3.141592653589793e+00 | notasi ilmiah lengkap |
format bank | 3.14 | dua desimal, gaya keuangan |
format rat | 355/113 | pendekatan pecahan rasional |
Dua varian favorit praktisi: format bank untuk laporan uang (selalu dua digit desimal) dan format rat yang memperlihatkan pi sebagai 355/113 — pendekatan pecahan yang sudah dikenal sejak Archimedes. Varian shortE/longE paling berguna saat bekerja dengan nilai yang sangat besar atau sangat kecil.
disp dan fprintf: Dua Cara Menampilkan #
Fungsi disp() menampilkan satu nilai apa adanya — tanpa format, tanpa argumen tambahan. Untuk teks, disp mencetak isinya bersih tanpa tanda kutip; untuk matriks, disp menampilkan barisnya secara rapi:
disp('Halo, MATLAB!');
disp([1 2; 3 4]);Output yang Dihasilkan:
Halo, MATLAB!
1 2
3 4disp cepat ditulis, tetapi kendalinya nol: kita tidak bisa mencampur teks dengan angka atau mengatur jumlah desimal. Untuk itu ada fprintf(), pewarisan gaya bahasa C yang menerima format string berisi penanda tempat (format specifier) diikuti nilai-nilai yang mengisinya:
| Specifier | Menampilkan | Contoh | Hasil |
|---|---|---|---|
%d | nilai bulat | fprintf('%d\n', 42) | 42 |
%f | desimal tetap (default 6) | fprintf('%f\n', pi) | 3.141593 |
%.2f | desimal 2 digit | fprintf('%.2f\n', pi) | 3.14 |
%e | notasi eksponen | fprintf('%e\n', pi) | 3.141593e+00 |
%g | paling ringkas | fprintf('%g\n', pi) | 3.14159 |
%s | teks | fprintf('%s\n', 'MATLAB') | MATLAB |
%% | tanda persen literal | fprintf('100%%\n') | 100% |
\n | pindah baris (escape) | fprintf('A\nB\n') | dua baris |
Mari kita lihat seluruh specifier bekerja dalam satu script:
disp('Laporan Penjualan Toko Budi');
fprintf('%%d (integer) : %d\n', 42);
fprintf('%%f (default) : %f\n', pi);
fprintf('%%.2f (2 desimal) : %.2f\n', pi);
fprintf('%%e (eksponen) : %e\n', pi);
fprintf('%%g (ringkas) : %g\n', pi);
fprintf('%%s (teks) : %s\n', 'MATLAB');
fprintf('Persen literal : 100%%\n');Output yang Dihasilkan:
Laporan Penjualan Toko Budi
%d (integer) : 42
%f (default) : 3.141593
%.2f (2 desimal) : 3.14
%e (eksponen) : 3.141593e+00
%g (ringkas) : 3.14159
%s (teks) : MATLAB
Persen literal : 100%Mari kita bedah baris-baris kode di atas:
- Baris 1 (
disp('...')):dispmencetak teks apa adanya tanpa perlu\n— pergantian baris otomatis. - Baris 3 (
%d): spesifikasi%dmenampilkan nilai bulat; tanda%%ddi awal teks mencetak%dliteral. - Baris 4-5 (
%f,%.2f):%fmemakai enam digit desimal secara default;%.2fmemaksa dua digit — format paling sering dipakai untuk laporan. - Baris 6-7 (
%e,%g):%eselalu memakai notasi ilmiah;%gmemilih representasi terpendek antara desimal dan eksponen. - Baris 9 (
100%%): dua tanda persen mencetak satu tanda persen, karena%tunggal selalu dibaca sebagai awal specifier.
Lebar Field, Perataan, dan sprintf #
Format specifier menerima field width dan perataan di antara % dan tipenya: %8.2f berarti lebar minimum 8 karakter dengan 2 desimal (rata kanan), sedangkan %-8s berarti lebar 8 rata kiri. Angka di kiri titik mengatur lebar total, angka di kanan titik mengatur jumlah desimal:
fprintf('[%8.2f] rata kanan, lebar 8\n', pi);
fprintf('[%-8s] rata kiri, lebar 8\n', 'kiri');Output yang Dihasilkan:
[ 3.14] rata kanan, lebar 8
[kiri ] rata kiri, lebar 8Lebar field adalah kunci menyusun tabel yang rapi: seluruh kolom sejajar karena setiap nilai menempati jumlah karakter yang sama.
Saudara dari fprintf adalah sprintf(): sintaksnya identik, tetapi hasilnya dikembalikan sebagai teks alih-alih dicetak. Gunakan sprintf ketika teks akan disimpan, digabung, atau dipakai ulang:
baris = sprintf('Total: Rp%d', 4500);
fprintf('%s (panjang %d)\n', baris, length(baris));Output yang Dihasilkan:
Total: Rp4500 (panjang 13)Mari kita bedah baris-baris kode di atas:
- Baris 1 (
sprintf): teks'Total: Rp4500'dibentuk dan disimpan ke variabelbarisbertipechar— tidak ada yang tercetak pada baris ini. - Baris 2 (
fprintf): teks tersebut dicetak bersama panjangnya; hasilnya identik dengan yangsprintfbentuk.
fprintf pada Array: Urutan Kolom-demi-Kolom #
Satu kejutan menanti kita ketika argumen fprintf berupa array: MATLAB mengisi specifier dari elemen array kolom demi kolom (column-major), bukan baris demi baris. Matriks [1 2; 3 4] dikonsumsi urutan 1, 3, 2, 4. Solusinya sederhana — transposkan matriksnya agar konsumsi kolom demi kolom berjalan sesuai baris yang kita maksud:
matriks = [1 2; 3 4];
fprintf('Elemen matriks baris demi baris:\n');
fprintf('%d %d\n', matriks'); % transpose agar tercetak per barisOutput yang Dihasilkan:
Elemen matriks baris demi baris:
1 2
3 4Mari kita bedah baris-baris kode di atas:
- Baris 3 (
matriks'): transpose menukar baris dan kolom, sehingga urutan konsumsi kolon-major menjadi 1, 2, 3, 4 — pasangan (1,2) lalu (3,4). - Specifier berulang: format
'%d %d\n'diulang otomatis sampai seluruh elemen terpakai; tanpa transpose, hasilnya akan tercetak “1 3” dan “2 4”.
Berkas contoh.m pada bagian bawah halaman menguji seluruh specifier, lebar field, sprintf, dan pola transpose dalam satu script dengan output yang deterministik.
Ringkasan #
Perintah format mengatur gaya tampilan Command Window tanpa menyentuh nilai tersimpan; disp menampilkan nilai mentah; fprintf memberi kendali penuh lewat specifier %d, %f, %.2f, %e, %g, %s, escape \n, dan lebar field untuk perataan. sprintf menyimpan hasil format sebagai teks, dan argumen array fprintf dikonsumsi kolom demi kolom — transposkan bila perlu. Dengan perangkat ini, laporan dan hasil eksekusi program kita tampil seprofesional isinya.