MariaDB memiliki ROUND()
fungsi dan FLOOR()
fungsi yang serupa dalam beberapa hal, tetapi sangat berbeda dalam hal lain.
Di bawah ini adalah ikhtisar singkat tentang perbedaan antara ROUND()
dan FLOOR()
di MariaDB.
Perbedaan
Berikut perbedaan antara masing-masing fungsi secara singkat:
ROUND()
membulatkan argumennya ke sejumlah tempat desimal tertentu.FLOOR()
mengembalikan nilai integer terbesar yang tidak lebih besar dari argumennya.
Sintaks
Berikut adalah sintaks dan definisi dari masing-masing fungsi.
ROUND()
ROUND()
fungsi dapat digunakan dengan dua cara berikut:
ROUND(X)
ROUND(X,D)
ROUND()
membulatkan argumen X
ke D
tempat desimal. Algoritma pembulatan tergantung pada tipe data X
.
FLOOR()
FLOOR()
fungsi dapat digunakan hanya dengan satu sintaks:
FLOOR(X)
FLOOR()
mengembalikan nilai integer terbesar yang tidak lebih besar dari X
.
Contoh Perbedaannya
Berikut perbandingan untuk menunjukkan perbedaan antara ROUND()
dan FLOOR()
:
SELECT
FLOOR(3.6789),
ROUND(3.6789);
Hasil:
+---------------+---------------+ | FLOOR(3.6789) | ROUND(3.6789) | +---------------+---------------+ | 3 | 4 | +---------------+---------------+
Dalam hal ini, ROUND()
fungsi membulatkan angka ke atas, karena angka berikutnya (8
) lebih besar dari 5
.
FLOOR()
fungsi di sisi lain, cukup mengembalikan nilai integer terbesar tidak lebih besar dari argumen (3.6789
).
Argumen Kedua
Perbedaan lainnya adalah ROUND()
menerima argumen kedua opsional, sedangkan FLOOR()
tidak.
Argumen kedua memungkinkan Anda untuk menentukan berapa banyak tempat desimal untuk membulatkan angka.
Contoh
SELECT
FLOOR(3.6789),
ROUND(3.6789, 2);
Hasil:
+---------------+------------------+ | FLOOR(3.6789) | ROUND(3.6789, 2) | +---------------+------------------+ | 3 | 3.68 | +---------------+------------------+
Contoh Hasil yang Sama
Fungsi-fungsi ini terkadang dapat mengembalikan hasil yang sama. Itu semua tergantung pada nilai argumen yang diteruskan.
Misalnya, jika kita menempatkan tanda negatif di depan nilai, kita mendapatkan hasil yang sama:
SELECT
FLOOR(-3.6789),
ROUND(-3.6789);
Hasil:
+----------------+----------------+ | FLOOR(-3.6789) | ROUND(-3.6789) | +----------------+----------------+ | -4 | -4 | +----------------+----------------+
Itu tidak berarti bahwa nilai negatif selalu mengembalikan hasil yang sama – tidak. Itu semua tergantung pada nilai aktual yang diberikan dan pembulatan yang dilakukan oleh ROUND()
.
Berikut ini contoh di mana nilai negatif menghasilkan hasil yang berbeda:
SELECT
FLOOR(-3.3739),
ROUND(-3.3739);
Hasil:
+----------------+----------------+ | FLOOR(-3.3739) | ROUND(-3.3739) | +----------------+----------------+ | -4 | -3 | +----------------+----------------+
Dan inilah contoh di mana nilai positif mengembalikan hasil yang sama:
SELECT
FLOOR(3.3739),
ROUND(3.3739);
Hasil:
+---------------+---------------+ | FLOOR(3.3739) | ROUND(3.3739) | +---------------+---------------+ | 3 | 3 | +---------------+---------------+
The TRUNCATE()
Fungsi
Kedua fungsi tersebut berbeda dengan TRUNCATE()
fungsi, yang hanya memotong nilai ke sejumlah tempat desimal tertentu.