แปลงค่าจริงเป็นสตริงที่มีทศนิยมทั้งหมดใน Dynamics AX 2012
ที่ตีพิมพ์: 16 กุมภาพันธ์ 2025 เวลา 10 นาฬิกา 41 นาที 13 วินาที UTC
ปรับปรุงล่าสุด : 12 มกราคม 2026 เวลา 8 นาฬิกา 52 นาที 31 วินาที UTC
ในบทความนี้ ผมจะอธิบายวิธีการแปลงตัวเลขทศนิยมเป็นสตริงโดยคงค่าทศนิยมทั้งหมดไว้ใน Dynamics AX 2012 พร้อมตัวอย่างโค้ด X++
Convert a Real to String with All Decimals in Dynamics AX 2012
ข้อมูลในโพสต์นี้อ้างอิงจาก Dynamics AX 2012 R3 อาจใช้ได้หรือไม่ก็ได้กับเวอร์ชันอื่นๆ
บางครั้งผมจำเป็นต้องแปลงจำนวนจริงเป็นสตริง โดยปกติแล้ว การส่งค่าไปยังฟังก์ชัน strFmt() ก็เพียงพอแล้ว แต่ฟังก์ชันนั้นจะปัดเศษเป็นทศนิยมสองตำแหน่งเสมอ ซึ่งไม่ใช่สิ่งที่ผมต้องการเสมอไป
นอกจากนี้ยังมีฟังก์ชัน num2str() ซึ่งใช้งานได้ดี แต่ต้องทราบล่วงหน้าว่าต้องการจำนวนทศนิยมและจำนวนตัวอักษรเท่าใด
แล้วถ้าคุณต้องการแปลงตัวเลขนั้นให้เป็นสตริง โดยคงไว้ทั้งตัวเลขหลักเดียวและทศนิยมล่ะ? ด้วยเหตุผลบางอย่าง นี่เป็นสิ่งที่มักทำให้ฉันต้องค้นหาใน Google เสมอ เพราะมันเป็นวิธีที่ค่อนข้างซับซ้อนและฉันทำมันน้อยมากจนมักจำวิธีทำได้ไม่แม่นยำนัก ในภาษาโปรแกรมส่วนใหญ่ ฉันคิดว่าคุณสามารถนำตัวเลขจริงมาต่อกับสตริงว่างได้ แต่ X++ ไม่รองรับวิธีนั้น
อย่างไรก็ตาม วิธีที่ง่ายที่สุดที่ฉันพบคือการใช้คำสั่งเรียกจาก .NET มีตัวเลือกมากมาย ทั้งแบบที่มีและไม่มีตัวเลือกสำหรับการจัดรูปแบบขั้นสูง แต่ถ้าคุณต้องการแค่การแปลงค่าจริงเป็นสตริงแบบง่ายๆ วิธีนี้ก็เพียงพอแล้ว:
หากจะรันโค้ดนี้บน AOS (เช่น ในงานแบตช์) โปรดอย่าลืมตรวจสอบสิทธิ์การเข้าถึงโค้ดที่จำเป็นก่อน ในกรณีนี้ คุณจะต้องมี InteropPermission ประเภท ClrInterop เพื่อเรียกใช้โค้ด .NET ดังนั้นตัวอย่างโค้ดแบบเต็มจะดูประมาณนี้:
stringValue = System.Convert::ToString(realValue);
CodeAccessPermission::revertAssert();
โปรดทราบว่าฟังก์ชัน System::Convert แบบง่ายนี้ใช้ภาษาท้องถิ่นปัจจุบันของระบบในการกำหนดตำแหน่งจุดทศนิยม ซึ่งอาจไม่ใช่ปัญหาสำหรับคุณ แต่สำหรับผมซึ่งอาศัยอยู่ในพื้นที่ที่ใช้เครื่องหมายจุลภาคแทนจุดเป็นตัวคั่นทศนิยม อาจต้องมีการประมวลผลเพิ่มเติมหากสตริงนั้นจำเป็นต้องใช้ในไฟล์ที่ระบบอื่นต้องอ่านได้
อ่านเพิ่มเติม
หากคุณชอบโพสต์นี้ คุณอาจชอบคำแนะนำเหล่านี้ด้วย:
- การใช้เฟรมเวิร์ก SysExtension เพื่อค้นหาว่าคลาสย่อยที่จะสร้างอินสแตนซ์ใน Dynamics AX 2012
- การใช้แบบสอบถามในคลาสสัญญาข้อมูล SysOperation ใน Dynamics AX 2012
- การเรียกบริการเอกสาร AIF โดยตรงจาก X++ ใน Dynamics AX 2012
