กระทู้เก่าบอร์ด อ.สุภาพ ไชยา
354 1
URL.หัวข้อ /
URL
การปัดเศษสตางค์ตามช่วงที่กำหนด
มีคนถามไว้ที่
http://pantip.inet.co.th/tech/software/topic/SP667508.html
คิดการปัดเศษสตางค์ตามช่วงที่กำหนด
ถ้าต้องการใช้ VB ในการเขียนฟังค์ชั่นที่ให้ในการปัดเศษสตางค์ตามช่วงที่เรากำหนดจะต้องเขียนอย่างไร
โดยข้อมูลที่รับเข้ามาเป็น float เช่น 10.10 บาท โดยเงินจำนวน 10.10 บาทนั้นเราไม่สามารถที่จะจ่ายเป็นเงินสดได้ เราจึงต้องทำการปัดเศษสตางค์ โดยมีช่วงที่กำหนดดังนี้
0.01 - 0.12 ให้ปัดเป็น 0.00
0.13 - 0.37 ให้ปัดเป็น 0.25
0.38 - 0.62 ให้ปัดเป็น 0.50
0.63 - 0.87 ให้ปัดเป็น 0.75
0.88 - 0.00 ให้ปัดเป็น 1.0
จากตัวอย่างข้างต้น ตัวเลข 10.10 จะถูกปัดเป็น 10.00 บาท รบกวนเพื่อนๆ พี่ๆ ที่รู้ช่วยตอบหรือบอกแนวการคิดให้ด้วยนะคะ
ขอบคุณมากคะ
จากคุณ: หัดเขียน [20 เม.ย. 2544 - 14:07:26]
ผมเลยนำมาเขียนโค้ดตามตัวอย่างข้างล่าง
Function RoundStang(ByVal dblNumber As Double)
Dim intStang As Integer, lngBaht As Long
Dim rtnNumber As Double
If InStr(dblNumber, ".") = 0 Then
rtnNumber = dblNumber
Else
intStang = Mid(dblNumber, InStr(dblNumber, ".") + 1)
If dblNumber > 1 Then
lngBaht = Left(dblNumber, InStr(dblNumber, ".") - 1)
Else
lngBaht = 0
End If
Select Case intStang
Case Is <= 12
rtnNumber = lngBaht
Case Is <= 37
rtnNumber = lngBaht + (25 / 100)
Case Is <= 62
rtnNumber = lngBaht + (5 / 100)
Case Is <= 87
rtnNumber = lngBaht + (75 / 100)
Case Else
rtnNumber = lngBaht + 1
End Select
End If
RoundStang = Format(rtnNumber, "#,##0.00")
End Function
ช่วยแจ้ง bugs เข้ามาด้วยถ้าเจอครับ *** Edited by Supap Chaiya *** 4/9/2546 17:45:28
http://pantip.inet.co.th/tech/software/topic/SP667508.html
คิดการปัดเศษสตางค์ตามช่วงที่กำหนด
ถ้าต้องการใช้ VB ในการเขียนฟังค์ชั่นที่ให้ในการปัดเศษสตางค์ตามช่วงที่เรากำหนดจะต้องเขียนอย่างไร
โดยข้อมูลที่รับเข้ามาเป็น float เช่น 10.10 บาท โดยเงินจำนวน 10.10 บาทนั้นเราไม่สามารถที่จะจ่ายเป็นเงินสดได้ เราจึงต้องทำการปัดเศษสตางค์ โดยมีช่วงที่กำหนดดังนี้
0.01 - 0.12 ให้ปัดเป็น 0.00
0.13 - 0.37 ให้ปัดเป็น 0.25
0.38 - 0.62 ให้ปัดเป็น 0.50
0.63 - 0.87 ให้ปัดเป็น 0.75
0.88 - 0.00 ให้ปัดเป็น 1.0
จากตัวอย่างข้างต้น ตัวเลข 10.10 จะถูกปัดเป็น 10.00 บาท รบกวนเพื่อนๆ พี่ๆ ที่รู้ช่วยตอบหรือบอกแนวการคิดให้ด้วยนะคะ
ขอบคุณมากคะ
จากคุณ: หัดเขียน [20 เม.ย. 2544 - 14:07:26]
ผมเลยนำมาเขียนโค้ดตามตัวอย่างข้างล่าง
Function RoundStang(ByVal dblNumber As Double)
Dim intStang As Integer, lngBaht As Long
Dim rtnNumber As Double
If InStr(dblNumber, ".") = 0 Then
rtnNumber = dblNumber
Else
intStang = Mid(dblNumber, InStr(dblNumber, ".") + 1)
If dblNumber > 1 Then
lngBaht = Left(dblNumber, InStr(dblNumber, ".") - 1)
Else
lngBaht = 0
End If
Select Case intStang
Case Is <= 12
rtnNumber = lngBaht
Case Is <= 37
rtnNumber = lngBaht + (25 / 100)
Case Is <= 62
rtnNumber = lngBaht + (5 / 100)
Case Is <= 87
rtnNumber = lngBaht + (75 / 100)
Case Else
rtnNumber = lngBaht + 1
End Select
End If
RoundStang = Format(rtnNumber, "#,##0.00")
End Function
ช่วยแจ้ง bugs เข้ามาด้วยถ้าเจอครับ *** Edited by Supap Chaiya *** 4/9/2546 17:45:28
1 Reply in this Topic. Dispaly 1 pages and you are on page number 1
1 @R00063
ใช้ Function Int() ช่วยดังนี้
=Int( dblNumber * 4 + 0.48 ) / 4
Time: 0.1494s