Miklix

แปลงค่าจริงเป็นสตริงที่มีทศนิยมทั้งหมดใน 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 นอกจากนี้ยังมีตัวเลือกอื่นๆ อีกมากมาย ทั้งแบบมีและไม่มีตัวเลือกสำหรับการจัดรูปแบบขั้นสูง แต่หากคุณต้องการแปลงค่าจริงเป็นสตริงแบบง่ายๆ จริงๆ วิธีนี้เพียงพอแล้ว:

stringValue = System.Convert::ToString(realValue);

หากต้องเรียกใช้โค้ดนี้บน AOS (เช่น ในงานแบตช์) อย่าลืมยืนยันสิทธิ์การเข้าถึงโค้ดที่จำเป็นก่อน ในกรณีนี้ คุณจะต้องมี InteropPermission ประเภท ClrInterop เพื่อเรียกใช้โค้ด .NET ดังนั้นตัวอย่างโค้ดทั้งหมดจะมีลักษณะดังนี้:

new InteropPermission(InteropKind::ClrInterop).assert();
stringValue = System.Convert::ToString(realValue);
CodeAccessPermission::revertAssert();

โปรดทราบว่าฟังก์ชัน System::Convert ที่เรียบง่ายนี้ใช้ตำแหน่งปัจจุบันของระบบโดยคำนึงถึงอักขระจุดทศนิยม ซึ่งอาจไม่ใช่ปัญหาสำหรับคุณ แต่สำหรับฉันที่อาศัยอยู่ในพื้นที่ที่ใช้เครื่องหมายจุลภาคแทนจุดเป็นตัวคั่นทศนิยม อาจต้องมีการประมวลผลเพิ่มเติมหากจำเป็นต้องใช้สตริงในไฟล์ที่ระบบอื่นต้องอ่านได้

แชร์บนบลูสกายแชร์บนเฟสบุ๊คแชร์บน LinkedInแชร์บน Tumblrแชร์บน Xแชร์บน LinkedInปักหมุดบน Pinterest

มิคเคล บัง คริสเตนเซ่น

เกี่ยวกับผู้เขียน

มิคเคล บัง คริสเตนเซ่น
ไมเคิล คือผู้สร้างและเจ้าของเว็บไซต์ miklix.com เขามีประสบการณ์เป็นโปรแกรมเมอร์/นักพัฒนาซอฟต์แวร์คอมพิวเตอร์มืออาชีพมากว่า 20 ปี และปัจจุบันทำงานเต็มเวลาให้กับบริษัทไอทีขนาดใหญ่แห่งหนึ่งในยุโรป เมื่อไม่ได้เขียนบล็อก เขาจะใช้เวลาว่างไปกับความสนใจ งานอดิเรก และกิจกรรมต่างๆ มากมาย ซึ่งในระดับหนึ่งอาจสะท้อนให้เห็นได้จากหัวข้อต่างๆ มากมายที่กล่าวถึงในเว็บไซต์นี้