PHP : Math Operation

Melakukan Operasi Matematika

PHP memiliki beberapa fungsi bawaan yang membantu kalian melakukan apa saja mulai dari penambahan atau pengurangan sederhana hingga perhitungan lanjutan. Kalian telah melihat cara melakukan operasi matematika dasar di bab operator PHP. Mari kita lihat contoh di bawah ini:

<?php
echo 7 + 3; // 0utputs: 10
echo 7 - 2; // 0utputs: 5
echo 7 * 2; // 0utputs: 14
echo 7 / 2; // 0utputs: 3.5
echo 7 % 2; // 0utputs: 1
?>

Setiap operasi matematika memiliki tingkatannya sendiri; umumnya perkalian dan pembagian dilakukan sebelum penambahan dan pengurangan. Namun, tanda kurung dapat mengubah prioritas ini; ekspression yang terlampir di dalam tanda kurung selalu dievaluasi terlebih dahulu, terlepas dari tingkat presedensi operasi, seperti yang ditunjukkan pada contoh berikut:

<?php
echo 5 + 4 * 10;         // 0utputs: 45
echo (5 + 4) * 10;       // 0utputs: 90
echo 5 + 4 * 10 / 2;     // 0utputs: 25
echo 8 * 10 / 4 - 2;     // 0utputs: 18
echo 8 * 10 / (4 - 2);   // 0utputs: 40
echo 8 + 10 / 4 - 2;     // 0utputs: 8.5
echo (8 + 10) / (4 - 2); // 0utputs: 9
?>

Pada bagian berikut kita akan melihat beberapa fungsi PHP bawaan yang paling sering digunakan dalam melakukan operasi matematika.

Mendapatkan Nilai Absolut dari Sebuah Angka

Nilai absolut integer atau float dapat ditemukan dengan fungsi abs(), seperti yang ditunjukkan dalam contoh berikut:

<?php
echo abs(5);    // 0utputs: 5 (integer)
echo abs(-5);   // 0utputs: 5 (integer)
echo abs(4.2);  // 0utputs: 4.2 (double/float)
echo abs(-4.2); // 0utputs: 4.2 (double/float)
?>

Seperti yang kalian lihat jika angka yang diberikan negatif, nilai yang dikembalikan adalah positif. Tetapi, jika angkanya positif, fungsi ini hanya mengembalikan angkanya.

Membulatkan Nilai Fractional Atas atau Bawah

Fungsi ceil() dapat digunakan untuk membulatkan nilai fraksional hingga nilai integer tertinggi berikutnya, sedangkan fungsi floor() dapat digunakan untuk membulatkan nilai fraksional ke nilai integer terendah berikutnya, seperti yang ditunjukkan pada contoh berikut:

<?php
// Round fractions up
echo ceil(4.2);    // 0utputs: 5
echo ceil(9.99);   // 0utputs: 10
echo ceil(-5.18);  // 0utputs: -5
 
// Round fractions down
echo floor(4.2);    // 0utputs: 4
echo floor(9.99);   // 0utputs: 9
echo floor(-5.18);  // 0utputs: -6
?>
Mendapatkan Akar Kuadrat dari Sebuah Angka

Kalian dapat menggunakan fungsi sqrt() untuk menemukan akar kuadrat dari angka positif. Fungsi ini mengembalikan nilai khusus NAN untuk angka negatif. Berikut contohnya:

<?php
echo sqrt(9);   // 0utputs: 3
echo sqrt(25);  // 0utputs: 5
echo sqrt(10);  // 0utputs: 3.1622776601684
echo sqrt(-16); // 0utputs: NAN
?>
Menghasilkan Angka Random

Fungsi rand() dapat digunakan untuk menghasilkan angka acak (random). Kalian bisa menentukan rentangnya dengan passing argumen min, maks, seperti ditunjukkan dalam contoh berikut:

<?php
// Generate some random numbers
echo rand() . "<br>";
echo rand() . "<br>";
 
// Generate some random numbers between 1 and 10 (inclusive)
echo rand(1, 10) . "<br>";
echo rand(1, 10) . "<br>";
?>

Jika fungsi rand() dipanggil tanpa argumen opsional min, maks, maka fungsi tersebut akan mengembalikan angka pseudo-random antara 0 dan getrandmax(). Fungsi getrandmax() menunjukkan possible random value, yang hanya 32767 pada platform Windows. Jadi, jika kalian memerlukan rentang yang lebih besar dari 32767, kalian cukup menentukan argumen min dan max.

Mengkonversi Bilangan Desimal ke Biner dan sebaliknya

Fungsi decbin() digunakan untuk mengubah angka desimal menjadi angka biner. Sedangkan pasangannya fungsi bindec() mengubah angka dari biner menjadi desimal.

<?php
// Convert Decimal to Binary 
echo decbin(2);    // 0utputs: 10  
echo decbin(12);   // 0utputs: 1100  
echo decbin(100);  // 0utputs: 1100100
 
// Convert Binary to Decimal
echo bindec(10);       // 0utputs: 2 
echo bindec(1100);     // 0utputs: 12  
echo bindec(1100100);  // 0utputs: 100
?>
Mengkonversi Bilangan Desimal ke Heksadesimal dan Sebaliknya

Fungsi dechex() digunakan untuk mengubah angka desimal menjadi representasi heksadesimal. Sedangkan, fungsi hexdec() digunakan untuk mengubah string heksadesimal menjadi angka desimal.

<?php
// Convert decimal to hexadecimal 
echo dechex(255);  // 0utputs: ff
echo dechex(196);  // 0utputs: c4
echo dechex(0);    // 0utputs: 0
 
// Convert hexadecimal to decimal
echo hexdec('ff');  // 0utputs: 255
echo hexdec('c4');  // 0utputs: 196
echo hexdec(0);     // 0utputs: 0
?>
Mengonversi Angka Desimal ke Oktal dan sebaliknya

Fungsi decoct() digunakan untuk mengubah angka desimal menjadi representasi oktal. Sedangkan fungsi octdec() digunakan untuk mengubah angka oktal menjadi angka desimal.

<?php
// Convert decimal to octal 
echo decoct(12);   // 0utputs: 14
echo decoct(256);  // 0utputs: 400
echo decoct(77);   // 0utputs: 115
 
// Convert octal to decimal
echo octdec('14');   // 0utputs: 12
echo octdec('400');  // 0utputs: 256
echo octdec('115');  // 0utputs: 77
?>
Konversi Nomor dari Satu Basis Sistem ke Sistem Lainnya

Fungsi base_convert() dapat digunakan untuk mengonversi angka dari satu sistem basis ke sistem lainnya. Misalnya, kalian dapat mengubah desimal (base 10) menjadi biner (base 2), heksadesimal (base 16) menjadi oktal (base 8), oktal ke heksadesimal, heksadesimal ke desimal, dan seterusnya.

Fungsi ini menerima tiga parameter: jumlah untuk dikonversi, basis saat ini, dan basis untuk dikonversi. Sintaks dasarnya adalah sebagai berikut:

base_convert(number, frombase, tobase);

Di sini, angka dapat berupa integer atau string yang mewakili integer. Baik frombase dan tobase harus antara 2 dan 36, inklusif. Angka dalam angka dengan basis (base) lebih tinggi dari 10 akan diwakili dengan huruf a-z, di mana a berarti 10, b berarti 11 dan z berarti 35. Berikut adalah contoh sederhana untuk menunjukkan bagaimana fungsi ini bekerja:

<?php
// Convert decimal to binary
echo base_convert('12', 10, 2);  // 0utputs: 1100
// Convert binary to decimal
echo base_convert('1100', 2, 10);  // 0utputs: 12
 
// Convert decimal to hexadecimal
echo base_convert('10889592', 10, 16);  // 0utputs: a62978
// Convert hexadecimal to decimal
echo base_convert('a62978', 16, 10);  // 0utputs: 10889592
 
// Convert decimal to octal
echo base_convert('82', 10, 8);  // 0utputs: 122
// Convert octal to decimal
echo base_convert('122', 8, 10);  // 0utputs: 82
 
// Convert hexadecimal to octal
echo base_convert('c2c6a8', 16, 8);  // 0utputs: 60543250
// Convert octal to hexadecimal
echo base_convert('60543250', 8, 16);  // 0utputs: c2c6a8
 
// Convert octal to binary
echo base_convert('42', 8, 2);  // 0utputs: 100010
// Convert binary to octal
echo base_convert('100010', 2, 8);  // 0utputs: 42
 
// Convert hexadecimal to binary
echo base_convert('abc', 16, 2);  // 0utputs: 101010111100
// Convert binary to hexadecimal
echo base_convert('101010111100', 2, 16);  // 0utputs: abc
?>