Mengenal Bahasa Pemrograman Rust Bagian 2: Tipe Data Integer dan Float

2 min read

Disclaimer
Saya bekerja di AWS, semua opini adalah dari saya pribadi. (I work for AWS, my opinions are my own.)
Mengenal Bahasa Pemrograman Rust bagian 2: Tipe data
Mengenal Bahasa Pemrograman Rust Bagian 2 (Rust Logo: Hak Cipta Mozilla)

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.

TipeSignedRentang NilaiUnsignedRentang Nilai
8-biti8-128 ke 127u80 ke 255
16-biti16-32,768 ke 32,767u160 ke 65,535
32-biti32-(2 ^ 31) ke (2 ^ 31) – 1u320 ke (2 ^ 32) – 1
64-biti64-(2 ^ 63) ke (2 ^ 63) – 1u640 ke (2 ^ 64) – 1
128-biti128-(2 ^ 127) ke (2 ^ 127) – 1u1280 ke (2 ^ 128) – 1
archisizetergantung processorusitergantung processor
Tipe data integer pada Rust

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 IntegerAwalanContoh
DecimalTidak ada98_222 atau 98222
Hex0x0xff
Octal0o0o77
Binary0b0b1111_0000
Byte (u8 only)bb'A'
Penulisan integer dalam Rust

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.