Trong MariaDB, ROUND()
là một hàm số được tích hợp sẵn để làm tròn đối số của nó đến một số chữ số thập phân nhất định.
Cú pháp
Hàm có thể được sử dụng theo hai cách sau:
ROUND(X)
ROUND(X,D)
Ở đâu X
là giá trị làm tròn và D
là một đối số tùy chọn chỉ định số vị trí thập phân để làm tròn nó thành.
Ví dụ
Đây là một ví dụ:
SELECT ROUND(7.5);
Kết quả:
+------------+ | ROUND(7.5) | +------------+ | 8 | +------------+
Việc chuyển một giá trị âm sẽ tạo ra kết quả sau:
SELECT ROUND(-7.5);
Kết quả:
+-------------+ | ROUND(-7.5) | +-------------+ | -8 | +-------------+
Chỉ định vị trí thập phân
Theo mặc định, ROUND()
hàm làm tròn giá trị đến 0 vị trí thập phân. Chúng tôi có thể chỉ định số vị trí thập phân để làm tròn giá trị bằng cách chuyển đối số thứ hai.
Ví dụ:
SELECT ROUND(7.5164, 2);
Kết quả:
+------------------+ | ROUND(7.5164, 2) | +------------------+ | 7.52 | +------------------+
Vị trí thập phân phủ định
Đối số thứ hai có thể là giá trị âm nếu được yêu cầu. Việc chuyển một giá trị âm làm cho các chữ số ở bên trái vị trí thập phân trở thành số không.
Ví dụ:
SELECT ROUND(3724.51, -2);
Kết quả:
+--------------------+ | ROUND(3724.51, -2) | +--------------------+ | 3700 | +--------------------+
So với FLOOR()
ROUND()
hàm khác với FLOOR()
hàm số. ROUND()
hàm làm tròn số lên trong một số trường hợp và giảm xuống ở một số trường hợp khác. FLOOR()
mặt khác, hàm luôn trả về giá trị số nguyên lớn nhất không lớn hơn đối số của nó.
Dưới đây là một so sánh để chứng minh sự khác biệt này:
SELECT
FLOOR(3.6789),
ROUND(3.6789);
Kết quả:
+---------------+---------------+ | FLOOR(3.6789) | ROUND(3.6789) | +---------------+---------------+ | 3 | 4 | +---------------+---------------+
Ngoài ra, FLOOR()
không chấp nhận đối số thứ hai như ROUND()
không.
ROUND()
cũng khác với TRUNCATE()
hàm, chỉ đơn giản là cắt ngắn số đến một vị trí thập phân nhất định, mà không làm tròn số.
Đối số không phải dạng số
Đây là những gì sẽ xảy ra khi chúng tôi cung cấp đối số không phải là số:
SELECT ROUND('Ten');
Kết quả:
+--------------+ | ROUND('Ten') | +--------------+ | 0 | +--------------+ 1 row in set, 1 warning (0.028 sec)
Hãy kiểm tra cảnh báo:
SHOW WARNINGS;
Kết quả:
+---------+------+-----------------------------------------+ | Level | Code | Message | +---------+------+-----------------------------------------+ | Warning | 1292 | Truncated incorrect DOUBLE value: 'Ten' | +---------+------+-----------------------------------------+
Thiếu đối số
Đang gọi ROUND()
không có đối số dẫn đến lỗi:
SELECT ROUND();
Kết quả:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'ROUND'