ใน MySQL ไม่จำเป็นต้องจัดรูปแบบตัวเลขทศนิยมก่อนบันทึก ให้ใช้ชนิดข้อมูล DECIMAL(precision, scale) ซึ่งจะจัดการความแม่นยำและการปัดเศษอัตโนมัติ
รูปแบบ
DECIMAL(precision, scale) -- precision = จำนวนหลักทั้งหมด (รวมทศนิยม) -- scale = จำนวนหลักทศนิยม
ตัวอย่างการใช้งาน
สร้างตารางคอลัมน์ DECIMAL(10,2) (รองรับสูงสุด 99,999,999.99):
mysql> create table DemoTable1330 (Amount DECIMAL(10,2));
เพิ่มข้อมูลทดสอบ (มีค่าที่มีทศนิยมมากกว่า 2 ตำแหน่ง):
mysql> insert into DemoTable1330 values(10944.7893); -- จะปัดเป็น 10944.79 mysql> insert into DemoTable1330 values(9848.44); mysql> insert into DemoTable1330 values(8009.90); mysql> insert into DemoTable1330 values(1000.99);
ผลลัพธ์
+----------+ | Amount | +----------+ | 10944.79 | | 9848.44 | | 8009.90 | | 1000.99 | +----------+
ข้อดีของ DECIMAL:
- เก็บค่าที่แม่นยำ (Exact-value) ไม่มีปัญหาความคลาดเคลื่อนแบบ Floating-point
- ปัดเศษอัตโนมัติตาม scale ที่กำหนด (Round half up)
- เหมาะสำหรับข้อมูลทางการเงิน, ราคา, จำนวนเงิน
- ไม่ต้องจัดรูปแบบใน Application layer
หมายเหตุ: หาก insert ค่าที่มีทศนิยมมากกว่า scale จะเกิด Warning และปัดเศษตามกฎมาตรฐาน