ฟังก์ชัน round ปัดเศษทศนิยม

หากท่านใดมีข้อสงสัยหรือคำถามเกี่ยวกับการใช้งานโปรแกรม Express สามารถเข้ามาสอบถามได้ที่นี่ครับ

Moderator: Sutas, CO-Admin, Global Moderator

ฟังก์ชัน round ปัดเศษทศนิยม

โพสต์โดย sarunnio » พฤหัสฯ. มี.ค. 21, 2013 9:50 am

ผม define report frame และ data spec ไว้ดังนี้ ตามลำดับ
ประเด็นก็คือในรายงานใบกำกับสินค้า เราอยากจะแสดง line item แบบ include vat

[report frame]
(... ขอย่อ แสดงในส่วนของ line item ของ bill เลย ...)
~N    ~ARTICLE                                  ~QTY    ~TQUCOD  ~UNITPR_X    ~NETAMT_X        ;1


[data spec]
~UNITPR_X:    0,      "999,999.99",        "upx",    "upx = STCRD->UNITPR * 1.07"
~DISC_I:    0,      "",                "STCRD->DISC",      ""
~NETAMT_I:  0,      "ZZ,ZZZ,ZZZ.ZZ",    "STCRD->TRNVAL",    ""
~NETAMT_X:  0,      "999,999.99",    "nax",    "nax = STCRD->TRNVAL * 1.07"


คำถามนี้ focus ที่ line#4 ที่ตัวแปร ~NETAMT  ทำอย่างไร จึงจะสามารถปัดเศษ (round) ได้ ในการคำนวณค่า assign ให้ตัวแปร nax
มีฟังก์ชันอะไรที่ทำหน้าที่นี้ครับ

ตัวอย่าง
ถ้า STCRD->TRNVAL = 2.51
      นำ STCRD->TRNVAL * 1.07
    ผลการคูณจริงๆก็คือ  2.51 * 1.07 = 2.6857

คืออยากจะทำการปัดเศษทศนิยม 2 ตำแหน่งแล้วค่อยแสดงค่า  ค่าที่ต้องการโชว์  2.69  เนื่องจากทศนิยมตำแหน่งที่ 3 เป็น 5 ต้องปัดขึ้น
ยังไงแนะนำด้วยครับ ว่าปกติแล้ว ใน express ทำกันอย่างไร?
sarunnio
Newbie
Newbie
 
โพสต์: 18
ลงทะเบียนเมื่อ: อังคาร พ.ย. 27, 2012 2:52 pm

Re: ฟังก์ชัน round ปัดเศษทศนิยม

โพสต์โดย ASAN » พฤหัสฯ. มี.ค. 21, 2013 10:04 am

ปกติ โปรแกรมก็ปัดอยู่แล้วนะครับ  ลองคีย์เลขในหน้าจอขายดูสิครับ  หน่วย 2.51  ราคา 1.07 จำนวนเงินช่องสุดท้ายจะได้่ 2.69
ภาพประจำตัวสมาชิก
ASAN
Hero Member
Hero Member
 
โพสต์: 3477
ลงทะเบียนเมื่อ: อังคาร ก.ค. 15, 2003 9:50 am

Re: ฟังก์ชัน round ปัดเศษทศนิยม

โพสต์โดย savek » พฤหัสฯ. มี.ค. 21, 2013 12:53 pm

ในโปรแกรม Express จะไม่มีฟังก์ชั่น Round ให้ใช้ในเมนูแก้ไขแบบฟอร์มนะครับ :)

อย่างไรก็ตามระบบการปัดเศษในโปรแกรม ก็จะเป็นไปตามมาตรฐานทั่วไปอยู่แล้วนะครับ คือ หากเศษในส่วนของทศนิยมเกิน 5 ก็จะปัดขึ้น อย่างกรณีที่ยกตัวอย่าง 2.6857 เมื่อปัดเศษให้เหลือทศนิยม 2 ตำแหน่งก็จะเป็น 2.69 ครับ

และผมได้ลองแก้ไขแบบฟอร์ม ตามที่คุณ sarunnio ยกตัวอย่างมา คือ มูลค่ารวมเป็น 2.51 นำไปคูณกับ 1.07 ระบบก็จะแสดงออกมาเป็น 2.69 เช่นเดียวกันนะครับ
ภาพประจำตัวสมาชิก
savek
Administrator
Administrator
 
โพสต์: 12467
ลงทะเบียนเมื่อ: พฤหัสฯ. พ.ย. 15, 2007 11:04 am

Re: ฟังก์ชัน round ปัดเศษทศนิยม

โพสต์โดย answere » พฤหัสฯ. มี.ค. 21, 2013 1:02 pm

สวัสดีค่ะ คุณ sarunnio


ตามที่คุณ sarunnio แก้ไขไว้ก็ถูกต้องนะค่ะ เพราะค่าของผลลัพธ์ที่ได้ จะถูกบังคับด้วยรูปแบบของตัวเลขที่กำหนดไว้เป็น 99,999.99 อยู่แล้ว

แต่ถ้าต้องการทราบคำสั่งที่สามารถปัดทศนิยมให้ได้ ทาง answere(answer) ขออนุญาตแนะนำเพิ่มเติมดังนี้นะค่ะ


~NETAMT_X:  0,       "999,999.99",       "nax",            "nax1 = STR(STCRD->TRNVAL * 1.07,15,2) ; nax=VAL(nax1)"


ทาง Express จะใช้คำสั่ง STR เป็นตัวปัดทศนิยมให้ (โดยการกำหนด ,2 คือ  ให้แสดงทศนิยมแค่ 2 ตำแหน่งเท่านั้น
จากนั้นค่อยแปลงค่ากลับมาเป็นตัวเลขอีกครั้งด้วยคำสั่ง VAL


ยังไงทดลองเล่น หรือ ลองแก้ไขตามดูนะค่ะ
answere
Newbie
Newbie
 
โพสต์: 3
ลงทะเบียนเมื่อ: พฤหัสฯ. มี.ค. 21, 2013 12:07 pm

Re: ฟังก์ชัน round ปัดเศษทศนิยม

โพสต์โดย sarunnio » พฤหัสฯ. มี.ค. 21, 2013 3:03 pm

[quote="savek"]
ในโปรแกรม Express จะไม่มีฟังก์ชั่น Round ให้ใช้ในเมนูแก้ไขแบบฟอร์มนะครับ :)

อย่างไรก็ตามระบบการปัดเศษในโปรแกรม ก็จะเป็นไปตามมาตรฐานทั่วไปอยู่แล้วนะครับ คือ หากเศษในส่วนของทศนิยมเกิน 5 ก็จะปัดขึ้น อย่างกรณีที่ยกตัวอย่าง 2.6857 เมื่อปัดเศษให้เหลือทศนิยม 2 ตำแหน่งก็จะเป็น 2.69 ครับ

และผมได้ลองแก้ไขแบบฟอร์ม ตามที่คุณ sarunnio ยกตัวอย่างมา คือ มูลค่ารวมเป็น 2.51 นำไปคูณกับ 1.07 ระบบก็จะแสดงออกมาเป็น 2.69 เช่นเดียวกันนะครับ
[/quote]

เข้าใจแล้วตามที่ได้อธิบายครับ
ขอบคุณครับ
sarunnio
Newbie
Newbie
 
โพสต์: 18
ลงทะเบียนเมื่อ: อังคาร พ.ย. 27, 2012 2:52 pm


ย้อนกลับไปยัง ถาม-ตอบปัญหาเกี่ยวกับโปรแกรม Express

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: Google [Bot] และ บุคคลทั่วไป 61 ท่าน