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

Kiểu dữ liệu MySQL dùng cho số thập phân dài (high precision)

Để lưu trữ số thập phân với độ chính xác rất cao (nhiều chữ số sau dấu phẩy), MySQL cung cấp kiểu DECIMAL(M, D) (còn gọi là NUMERIC).

  • M (Precision): Tổng số chữ số tối đa (cả phần nguyên + phần thập phân). Max = 65.
  • D (Scale): Số chữ số sau dấu phẩy. Max = 30, và D ≤ M.

Để lưu số có **20 chữ số sau dấu phẩy**, dùng DECIMAL(21,20) (1 chữ số phần nguyên + 20 chữ số thập phân).

Ví dụ minh họa

mysql> CREATE TABLE DemoTable1493 (
    -> LongValue DECIMAL(21,20)
    -> );
Query OK, 0 rows affected (0.48 sec)

mysql> INSERT INTO DemoTable1493 VALUES
    -> (1.0047464644664677373),
    -> (5.999999484757773),
    -> (0.009994995885885);

mysql> SELECT * FROM DemoTable1493;

Kết quả – giữ nguyên độ chính xác:

+------------------------+
| LongValue              |
+------------------------+
| 1.00474646446646773730 |
| 5.99999948475777300000 |
| 0.00999499588588500000 |
+------------------------+

So sánh với FLOAT/DOUBLE

KiểuLưu trữĐộ chính xácPhù hợp cho
FLOAT4 bytes~7 chữ sốKhoa học, đồ họa, dung sai
DOUBLE8 bytes~15 chữ sốKhoa học, tính toán chung
DECIMAL(M,D)M/2 + 2 bytes (xấp xỉ)Chính xác tuyệt đối (fixed-point)Tài chính, tiền tệ, khoa học chính xác

Lưu ý

  • DECIMAL lưu trữ dưới dạng chuỗi số nén, tính toán chậm hơn FLOAT/DOUBLE nhưng **không bị sai số làm tròn**.
  • Chọn M, D vừa đủ – quá lớn làm chậm và tốn lưu trữ.
  • Với tiền tệ, phổ biến là DECIMAL(19,4) hoặc DECIMAL(10,2).