Không dùng FLOAT/DOUBLE cho tiền tệ do lỗi làm tròn nhị phân (binary floating-point).
Dùng DECIMAL(precision, scale) hoặc NUMERIC (tương đương).
precision: tổng số chữ số.scale: số chữ số sau dấu phẩy.
Ví dụ: DECIMAL(10,2) lưu đến 99,999,999.99 chính xác.
Demo:
CREATE TABLE MoneyStorageDemo (Amount DECIMAL(4,2)); INSERT INTO MoneyStorageDemo VALUES (50.2), (5.50), (10.4); SELECT * FROM MoneyStorageDemo; +--------+ | Amount | +--------+ | 50.20 | | 5.50 | | 10.40 | +--------+
Luôn dùng DECIMAL cho tiền, giá, tỷ lệ, đo lường chính xác.