MariaDB memiliki ROUND()
fungsi dan TRUNCATE()
fungsi yang dapat mengembalikan hasil yang sama atau hasil yang berbeda, tergantung pada nilai pasti dari argumennya.
Seperti yang disarankan oleh nama fungsi, ROUND()
putaran nomor dan TRUNCATE()
memotong nomor. Memotong angka hanya memotongnya tanpa melakukan pembulatan apa pun.
Di bawah ini adalah ikhtisar singkat tentang perbedaan antara ROUND()
dan TRUNCATE()
di MariaDB.
Perbedaan
Berikut perbedaan antara masing-masing fungsi secara singkat:
ROUND()
putaran argumennya ke sejumlah tempat desimal tertentu. Hal ini terkadang menyebabkan hasil dibulatkan, dan terkadang tidak.TRUNCATE()
cukup memotong argumennya ke sejumlah tempat desimal tertentu. Tidak ada pembulatan yang terjadi.
Sintaks &Definisi
Pertama, berikut adalah sintaks dan definisi dari setiap 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
.
TRUNCATE()
TRUNCATE()
fungsi dapat digunakan hanya dengan satu sintaks:
TRUNCATE(X,D)
TRUNCATE()
mengembalikan nomor X
, dipotong menjadi D
tempat desimal.
Contoh
Berikut perbandingan untuk menunjukkan perbedaan antara ROUND()
dan TRUNCATE()
:
SELECT
TRUNCATE(3.6789, 2),
ROUND(3.6789, 2);
Hasil:
+---------------------+------------------+ | TRUNCATE(3.6789, 2) | ROUND(3.6789, 2) | +---------------------+------------------+ | 3.67 | 3.68 | +---------------------+------------------+
Dalam hal ini, ROUND()
fungsi membulatkan angka ke atas, karena angka berikutnya (8
) lebih besar dari 5
.
TRUNCATE()
fungsi di sisi lain, cukup dipotong nomor di tempat desimal yang ditentukan. TRUNCATE()
tidak melakukan pembulatan. Itu hanya memotong nomor di tempat yang ditentukan.
Kedua fungsi menerima nilai negatif untuk tempat desimal, dan logika masing-masing yang sama berlaku:
SELECT
TRUNCATE(36789, -2),
ROUND(36789, -2);
Hasil:
+---------------------+------------------+ | TRUNCATE(36789, -2) | ROUND(36789, -2) | +---------------------+------------------+ | 36700 | 36800 | +---------------------+------------------+
Hasil yang Sama
Kedua fungsi terkadang dapat mengembalikan hasil yang sama. Itu semua tergantung pada nilai argumen yang diteruskan.
Berikut ini contoh di mana keduanya mengembalikan hasil yang sama:
SELECT
TRUNCATE(3.6749, 2),
ROUND(3.6749, 2);
Hasil:
+---------------------+------------------+ | TRUNCATE(3.6749, 2) | ROUND(3.6749, 2) | +---------------------+------------------+ | 3.67 | 3.67 | +---------------------+------------------+
Dalam hal ini, ROUND()
tidak membulatkan angka ke atas, karena angka berikutnya (4
) kurang dari 5
. Oleh karena itu, kedua hasil tersebut sama.
FLOOR()
Fungsi
Kedua fungsi tersebut berbeda dengan FLOOR()
fungsi, yang mengembalikan nilai integer terbesar tidak lebih besar dari argumennya. FLOOR()
tidak menerima argumen kedua seperti ROUND()
dan TRUNCATE()
do (toh hanya mengembalikan bilangan bulat).