\

Facebook


วันพฤหัสบดีที่ 1 ตุลาคม พ.ศ. 2558

เทคนิคง่ายๆในการแสดงข้อมูลประเภทการเงิน การบัญชี ใน SQL SERVER


ในเรื่องเงินๆทองๆ หน่วยที่น้อยที่สุดคือ 1 สตางค์ (ทศนิยมสองตำแหน่งจะได้ 0.01) และ SQL SERVER ได้สร้างประเภทข้อมูลทางราคาไว้ให้ใช้งานง่ายๆแล้วคือ DECIMAL แต่การคำนวนจริงๆได้ข้อมูลที่ละเอียดกว่า 2 ตำแหน่งอยู่แล้ว ตัวอย่างง่ายๆก็เช่น อยากได้ค่าภาษี(6.3%) กับสินค้า 1295 บาท จะได้ 81.585 คำถามคือ 0.005 ที่เกินมาเราจะทำยังไง

ปล.ตอนรับเรทภาษีมูลค่าเพิ่มใหม่จาก 7% เป็น 6.3% ที่เริ่ม 1 ตุลานี้ เลยเขียนบทความนี้เป็นตัวอย่างซะเลย

เราก็จะปัดขึ้นหรือปัดลงตามปกติ แต่เมื่อสินค้ามีเพิ่มเป็นร้อย เป็นพันชิ้น มันจะเริ่มเห็นความเเตกต่างของเงินที่คำนวนได้ ก็เงินที่จ่ายจริงๆ ในภาษาโปรแกรมเราสามารถเก็บค่าก่อนปัดเศษเพิ่อเอาไว้คำนวนต่อมีฟังชั่นประมาณนี้

ROUND() คือการปัดขึ้นถ้าเศษสุดท้ายมากกว่า 5 และปัดลงถ้าเศษน้อยกว่า 5 สามารถกำหนดความละเอียดของตำแหน่งทศนิยมได้
SELECT ROUND(81.585, 3, 2)
-- 81.585

แล้วยังกำหนดความละเอียดของหลักที่จะเริ่มปัดได้ เช่น
SELECT ROUND(81.585, 2)
-- 81.590

FLOOR() คือการปัดลงทุกกรณี
SELECT FLOOR(81.585)
-- 81

CEILING() คือการปัดขึ้นทุกกรณี
SELECT CEILING(81.585)
-- 82

อีกเทคนิคหนึ่งคือการ CAST หรือการเปลี่ยน TYPE ของตัวเลขซะเลย ซึ่งจริงๆแล้วมันคือการ ROUND() ก่อน CAST() เช่น
SELECT CAST( 0.0453 AS DECIMAL(10,2))
--0.05
*จะเห็นว่าเศษโดนปัดก่อนแปลงเป็นทศนิยม 2 หลัก

ถ้าคุณเขียนโปรแกรมเกี่ยวกับฟังชั่นคำนวนบัญชีคงจะมีประโยชน์อยู่ไม่น้อย เพราะงานเหล่านี้ทุกทศนิยมต้องเปะๆเท่ากัน ห้ามมีตกหล่น แล้วการปัดเศษง่ายๆนี้แหละที่ทำให้พลาดกัน

ไม่มีความคิดเห็น:

May be like this posts