แปลงค่าจริงเป็นสตริงที่มีทศนิยมทั้งหมดใน Dynamics AX 2012
ที่ตีพิมพ์: 16 กุมภาพันธ์ 2025 เวลา 10 นาฬิกา 41 นาที 13 วินาที 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 ที่เรียบง่ายนี้ใช้ตำแหน่งปัจจุบันของระบบโดยคำนึงถึงอักขระจุดทศนิยม ซึ่งอาจไม่ใช่ปัญหาสำหรับคุณ แต่สำหรับฉันที่อาศัยอยู่ในพื้นที่ที่ใช้เครื่องหมายจุลภาคแทนจุดเป็นตัวคั่นทศนิยม อาจต้องมีการประมวลผลเพิ่มเติมหากจำเป็นต้องใช้สตริงในไฟล์ที่ระบบอื่นต้องอ่านได้