ใช้ DECIMAL(p, s) สำหรับตัวเลขทศนิยมที่ต้องการความแม่นยำ
DECIMAL(precision, scale) หรือ NUMERIC เก็บตัวเลขทศนิยมแบบ Exact (ไม่มีปัญหาความคลาดเคลื่อนของ Floating Point) เหมาะกับเงิน/การเงิน
ตัวอย่างสร้างตาราง
CREATE TABLE DemoTable (Price DECIMAL(10, 2));
INSERT ค่าตัวเลขทศนิยม
INSERT INTO DemoTable VALUES (874674.50), (9948984.20), (12345678.99);
ผลลัพธ์
+-------------+ | Price | +-------------+ | 874674.50 | | 9948984.20 | | 12345678.99 | +-------------+
คำอธิบาย:
DECIMAL(10, 2): Precision=10 (รวมทุกหลัก), Scale=2 (ทศนิยม 2 ตำแหน่ง) → จำนวนเต็มได้ 8 หลัก- เก็บค่าที่แน่นอน ไม่มี Rounding Error เหมือน FLOAT/DOUBLE
- เหมาะกับ: ราคา, จำนวนเงิน, อัตราดอกเบี้ย, การวัดที่ต้องแม่นยำ
เปรียบเทียบชนิดข้อมูลตัวเลข:
| ชนิด | ขนาด | ประมาณ/แม่นยำ | เหมาะสำหรับ |
|---|---|---|---|
| TINYINT | 1 ไบต์ | Exact | -128 ถึง 127 |
| SMALLINT | 2 ไบต์ | Exact | -32768 ถึง 32767 |
| INT | 4 ไบต์ | Exact | -2B ถึง 2B |
| BIGINT | 8 ไบต์ | Exact | -9E18 ถึง 9E18 |
| DECIMAL(p,s) | พึ่งพา p | Exact | เงิน, ทศนิยมแม่นยำ |
| FLOAT | 4 ไบต์ | Approximate | วิทยาศาสตร์, ไม่ต้องแม่นยำ |
| DOUBLE | 8 ไบต์ | Approximate | วิทยาศาสตร์, ค่ามาก/เล็กมาก |
⚠ ข้อควรระวัง: FLOAT/DOUBLE ใช้ IEEE 754 Binary Floating Point มีปัญหา 0.1 + 0.2 != 0.3 ห้ามใช้กับเงิน/บัญชี