MariaDB có ROUND()
và một FLOOR()
hoạt động tương tự theo một số cách, nhưng hoàn toàn khác theo những cách khác.
Dưới đây là tóm tắt nhanh về sự khác biệt giữa ROUND()
và FLOOR()
trong MariaDB.
Sự khác biệt
Tóm lại, đây là sự khác biệt giữa từng chức năng:
-
ROUND()
làm tròn đối số của nó đến một số chữ số thập phân được chỉ định. -
FLOOR()
trả về giá trị số nguyên lớn nhất không lớn hơn đối số của nó.
Cú pháp
Đây là cú pháp và định nghĩa của từng hàm.
ROUND()
ROUND()
hàm có thể được sử dụng theo hai cách sau:
ROUND(X)
ROUND(X,D)
ROUND()
làm tròn đối số X
thành D
vị trí thập phân. Thuật toán làm tròn phụ thuộc vào kiểu dữ liệu của X
.
FLOOR()
FLOOR()
chỉ có thể sử dụng hàm với một cú pháp:
FLOOR(X)
FLOOR()
trả về giá trị số nguyên lớn nhất không lớn hơn X
.
Ví dụ về sự khác biệt
Dưới đây là so sánh để chứng minh sự khác biệt giữa ROUND()
và FLOOR()
:
SELECT
FLOOR(3.6789),
ROUND(3.6789);
Kết quả:
+---------------+---------------+ | FLOOR(3.6789) | ROUND(3.6789) | +---------------+---------------+ | 3 | 4 | +---------------+---------------+
Trong trường hợp này, ROUND()
hàm làm tròn số lên vì chữ số tiếp theo (8
) lớn hơn 5
.
FLOOR()
mặt khác, hàm này chỉ trả về giá trị số nguyên lớn nhất không lớn hơn đối số (3.6789
).
Đối số thứ hai
Một sự khác biệt nữa là ROUND()
chấp nhận đối số thứ hai tùy chọn, trong khi FLOOR()
không.
Đối số thứ hai cho phép bạn chỉ định bao nhiêu chữ số thập phân để làm tròn số.
Ví dụ
SELECT
FLOOR(3.6789),
ROUND(3.6789, 2);
Kết quả:
+---------------+------------------+ | FLOOR(3.6789) | ROUND(3.6789, 2) | +---------------+------------------+ | 3 | 3.68 | +---------------+------------------+
Ví dụ về cùng một kết quả
Các hàm này đôi khi có thể trả về cùng một kết quả. Tất cả phụ thuộc vào giá trị của các đối số được truyền.
Ví dụ:nếu chúng ta đặt một dấu âm trước các giá trị, chúng ta sẽ nhận được cùng một kết quả:
SELECT
FLOOR(-3.6789),
ROUND(-3.6789);
Kết quả:
+----------------+----------------+ | FLOOR(-3.6789) | ROUND(-3.6789) | +----------------+----------------+ | -4 | -4 | +----------------+----------------+
Điều đó không có nghĩa là giá trị âm luôn trả về cùng một kết quả - điều đó không xảy ra. Tất cả phụ thuộc vào các giá trị thực tế đang được cung cấp và việc làm tròn sẽ diễn ra theo ROUND()
.
Dưới đây là một ví dụ trong đó các giá trị âm tạo ra các kết quả khác nhau:
SELECT
FLOOR(-3.3739),
ROUND(-3.3739);
Kết quả:
+----------------+----------------+ | FLOOR(-3.3739) | ROUND(-3.3739) | +----------------+----------------+ | -4 | -3 | +----------------+----------------+
Và đây là một ví dụ trong đó các giá trị dương trả về cùng một kết quả:
SELECT
FLOOR(3.3739),
ROUND(3.3739);
Kết quả:
+---------------+---------------+ | FLOOR(3.3739) | ROUND(3.3739) | +---------------+---------------+ | 3 | 3 | +---------------+---------------+
TRUNCATE()
Chức năng
Cả hai hàm đều khác với TRUNCATE()
hàm, chỉ đơn giản là cắt ngắn giá trị đến một số vị trí thập phân nhất định.