TeknoCerdas.com – Salam cerdas untuk kita semua. Masih dalam seri mengenal bahasa pemrograman Rust. Pada tulisan kali ini penulis akan membahas tipe data pada bahasa pemrograman Rust. Pada bagian dua ini yang akan kita bahas hanya tipe data integer dan float.
Jika anda belum membaca seri pertama tulisan ini silahkan menuju link berikut. Mengenal Bahasa Pemrograman Rust dari Mozilla – Bagian 1.
Seperti bahasa pemrograman lain, pada Rust dikenal dua tipe data utama yaitu tipe data scalar dan tipe data compound.
Tipe Data Scalar
Tipe data scalar merepresentasikan sebuah nilai tunggal. Pada tipe ini terdapat empat tipe primitif: integer, float, boolean, dan character.
Tipe Data Integer
Pada Rust tipe data integer merepresentasikan sebuah nilai bilangan bulat utuh tanpa pecahan. Terdapat dua varian tipe integer pada Rust yaitu signed yang dilambangan dengan i
dan unsigned yang dilambangkan dengan u
.
Tipe | Signed | Rentang Nilai | Unsigned | Rentang Nilai |
---|---|---|---|---|
8-bit | i8 | -128 ke 127 | u8 | 0 ke 255 |
16-bit | i16 | -32,768 ke 32,767 | u16 | 0 ke 65,535 |
32-bit | i32 | -(2 ^ 31) ke (2 ^ 31) – 1 | u32 | 0 ke (2 ^ 32) – 1 |
64-bit | i64 | -(2 ^ 63) ke (2 ^ 63) – 1 | u64 | 0 ke (2 ^ 64) – 1 |
128-bit | i128 | -(2 ^ 127) ke (2 ^ 127) – 1 | u128 | 0 ke (2 ^ 128) – 1 |
arch | isize | tergantung processor | usi | tergantung processor |
Dapat dilihat pada tabel diatas bahwa terdapat banyak tipe integer. Jika ada kemungkinan nilai negatif maka gunakan tipe data signed. Tapi jika nilainya hanya positif gunakan unsigned. Jika nilai yang ditampung tidak sesuai maka compiler akan mengeluarkan pesan kesalahan.
fn main() {
let my_number: i8 = 300;
// Kode ini tidak akan berjalan karena 512 terlalu besar untuk i8
println!("Nomor anda adalah {}", my_number);
}
Kode diatas jika dilakukan kompilasi maka akan muncul kesalahan karena nilai 300 diluar signed integer 8
. Nilai maksimal dari i8
antara -128 sampai 127.
Compiling playground v0.0.1 (/playground)
error: literal out of range for `i8`
--> src/main.rs:2:25
|
2 | let my_number: i8 = 300;
| ^^^
|
= note: `#[deny(overflowing_literals)]` on by default
error: aborting due to previous error
error: could not compile `playground`.
To learn more, run the command again with --verbose.
Pada saat melakukan pemrograman sistem kebanyakan pengembang biasanya merepresentasikan integer tidak hanya dalam bentuk bilangan desimal tapi dalam varian lainnya. Misal ditulis dalam hexa-desimal.
Penulisan Integer | Awalan | Contoh |
---|---|---|
Decimal | Tidak ada | 98_222 atau 98222 |
Hex | 0x | 0xff |
Octal | 0o | 0o77 |
Binary | 0b | 0b1111_0000 |
Byte (u8 only) | b | b'A' |
Jadi jika melihat sebuah kode program Rust tapi terdapat banyak nilai aneh misal 0x
jangan heran karena itu hanyalah representasi angka dalam bentuk heksa.
fn main() {
// Pemisah ribuan digunakan "_" underscore
println!("Versi biasa -> Satu juta lima ratus = {}", 1500000);
println!("Versi pemisah ribuan -> Satu juta lima ratus = {}", 1_500_000);
println!("{} = {} = seribu", 1000, 0x3e8);
}
Sebagai catatan jika sebuah variabel integer tidak didefinisikan nilainya maka Rust secara default akan menganggapnya sebagai tipe unsigned 32-bit atau i32
.
Tipe Data Float
Sama seperti bahasa pemrograman lain tipe data float digunakan untuk merepresentasikan bilangan pecahan. Pada Rust hanya dikenal dua tipe bilangan float yaitu f32
dan f64
.
Keduanya f32
dikenal dengan istilah single precision dan f64
dikenal dengan double precision. Sesuai dengan namanya double precision maka f64
dapat menampung lebih banyak pecahan dan lebih presisi dari f32
.
Berbeda dengan integer jika tipe variable float tidak didefinisikan maka secara default variabel tersebut bertipe f64
bukan f32
.
fn main() {
let pecahan1 = 10.000005; // default ke f64
let pecahan2: f32 = 0.005; // eksplisit ke f32
println!("Pecahan 1 = {} | Pecahan 2 = {}", pecahan1, pecahan2);
println!("Pecahan 1 + Pecahan 2 = {}", pecahan1 + pecahan2);
// float + integer akan menghasilkan error
println!("10.5 + 20 = {}", pecahan1 + 20);
}
Catatan, operasi aritmatik seperti penjumlahan, pengurangan dan sebagainya harus dilakukan pada tipe data yang sama. Operasi antara float dan integer tidak dapat dilakukan dan akan menghasilkan kesalahan saat kompilasi. Perlu dilakukan type casting perubahan tipe data terlebih dahulu sebelum dilakukan operasi pada keduanya.
Sampai disini dulu mengenal bahasa pemrograman Rust bagian 2. Simak terus TeknoCerdas.com untuk update tulisan pengenalan bahasa pemrograman Rust.