Page 1 of 1

Data type

Posted: Tue Dec 25, 2012 9:07 am
by zxcv
ในการสร้างสูตร

Code: Select all

Function TOAVERAGE(Principal As Double, StartDate As Date, EndDate As Date) As Double
Dim TotalDays As Integer
Dim PerDay As Double
TotalDays = EndDate - StartDate + 1
1. ทั้ง Principal, PerDay และฟังค์ชั่น TOAVERAGE เป็นเพียง จำนวนเงินบาท และมีทศนิยมที่แน่นอนคือ 2 ตำแหน่งเท่านั้น การที่กำหนดเป็น Double มันเกินความจำเป็นหรือไม่ครับ แล้วที่เหมาะสมควรกำหนดเป้นอย่างไรจึงจะเหมาะสมครับครับ

2. ในฟังค์ชั่น TOAVERAGE

Code: Select all

PerDay = Application.Round((Principal / TotalDays), 2)
Principal บางจำนวน ให้ค่า PerDay ไม่เป็นทศนิยม 2 ตำแหน่ง ควรปรับปรุงอย่างไรเพื่อให้ PerDay ได้ทศนิยม 2 ตำแหน่งครับ

Re: Data type

Posted: Tue Dec 25, 2012 9:36 am
by snasui
zxcv wrote:1. ทั้ง Principal, PerDay และฟังค์ชั่น TOAVERAGE เป็นเพียง จำนวนเงินบาท และมีทศนิยมที่แน่นอนคือ 2 ตำแหน่งเท่านั้น การที่กำหนดเป็น Double มันเกินความจำเป็นหรือไม่ครับ แล้วที่เหมาะสมควรกำหนดเป้นอย่างไรจึงจะเหมาะสมครับครับ
:D เราสามารถใช้ Single สำหรับจำนวนที่เป็นทศนิยมได้ แต่ในกรณีตัวเลขที่นำมาใช้คำนวณเกินว่า 7 หลักให้ใช้ Double เนื่องจากรองรับตัวเลขมาก ๆ ได้ การใช้ Double แม้จะสิ้นเปลือง Memory ไปบ้าง แต่หากไม่ใช่โปรแกรมขนาดใหญ่มีข้อมูลมหาศาลก็ไม่ต้องไปกังวลมากครับ
zxcv wrote:Principal บางจำนวน ให้ค่า PerDay ไม่เป็นทศนิยม 2 ตำแหน่ง ควรปรับปรุงอย่างไรเพื่อให้ PerDay ได้ทศนิยม 2 ตำแหน่งครับ
กรณีที่หารกันลงตัวก็เป็นไปได้ที่ไม่แสดงทศนิยม หากต้องการให้แสดงทศนิยมก็ต้องกำหนด Format เข้าไปเองครับ เช่น Code ตามด้านล่าง

Code: Select all

PerDay = Format(Application.Round((Principal / TotalDays), 2),"0.00")

Re: Data type

Posted: Tue Dec 25, 2012 9:50 am
by zxcv

Code: Select all

PerDay = Round((Principal / TotalDays), 2)
ให้ผลต่างกันกับ

Code: Select all

PerDay = Application.Round((Principal / TotalDays), 2)
หรือไม่ครับ

Re: Data type

Posted: Tue Dec 25, 2012 9:56 am
by snasui
:lol: ลองก่อนเลยครับ ติดปัญหาแล้วถามต่อได้เรื่อย ๆ เท่าที่ต้องการครับ :lol: