Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Làm tròn số FLOAT đến độ chính xác cho trước trong MySQL với ROUND()

Sử dụng hàm ROUND() để làm tròn số thực (FLOAT/DOUBLE/DECIMAL) đến số chữ số thập phân mong muốn.

Cú pháp

SELECT ROUND(tên_cột, số_chữ_số_thập_phân) FROM tên_bảng;

Ví dụ minh họa

Tạo bảng demo:

mysql> CREATE TABLE givenPrecisionDemo (Amount FLOAT);

Chèn dữ liệu:

mysql> INSERT INTO givenPrecisionDemo(Amount) VALUES (45.678), (123.456), (245.890), (980.678);

Xem dữ liệu gốc:

mysql> SELECT * FROM givenPrecisionDemo;
+---------+
| Amount  |
+---------+
| 45.678  |
| 123.456 |
| 245.89  |
| 980.678 |
+---------+

Làm tròn 2 chữ số thập phân:

mysql> SELECT ROUND(Amount, 2) FROM givenPrecisionDemo;
+-----------------+
| ROUND(Amount,2) |
+-----------------+
| 45.68           |
| 123.46          |
| 245.89          |
| 980.68          |
+-----------------+

Quy tắc làm tròn (Round half up)

  • Chữ số sau vị trí làm tròn ≥ 5 → làm tròn lên
  • Chữ số sau vị trí làm tròn < 5 → giữ nguyên
  • Ví dụ: ROUND(45.678, 2) → 45.68 (vì 8≥5)

Các hàm liên quan

HàmHành viVí dụ ROUND(x,0)
ROUND(x, d)Làm tròn đến d chữ số thập phânROUND(1.5)=2, ROUND(2.5)=2*
CEIL(x) / CEILING(x)Làm tròn LÊN đến số nguyên gần nhấtCEIL(1.1)=2, CEIL(-1.1)=-1
FLOOR(x)Làm tròn XUỐNG đến số nguyên gần nhấtFLOOR(1.9)=1, FLOOR(-1.1)=-2
TRUNCATE(x, d)Cắt bỏ (không làm tròn) đến d chữ sốTRUNCATE(1.999,2)=1.99

* MySQL dùng "banker's rounding" cho ROUND(x,0): .5 làm tròn đến số chẵn gần nhất.

Làm tròn trong UPDATE

UPDATE products SET price = ROUND(price * 1.1, 2); -- Tăng 10%, làm tròn 2 chữ số

⚠️ Vấn đề FLOAT/DOUBLE

FLOAT/DOUBLE là số thực dấu chấm động (binary floating-point), không biểu diễn chính xác số thập phân (ví dụ 0.1). Dùng DECIMAL cho tiền tệ/độ chính xác cao.

SELECT ROUND(CAST(45.678 AS DECIMAL(10,3)), 2); -- Chính xác hơn