Chuyển đổi số thực thành chuỗi với tất cả số thập phân trong Dynamics AX 2012
Đã xuất bản: lúc 10:41:14 UTC 16 tháng 2, 2025
Cập nhật lần cuối: lúc 08:52:32 UTC 12 tháng 1, 2026
Trong bài viết này, tôi sẽ giải thích cách chuyển đổi số thập phân thành chuỗi trong Dynamics AX 2012 mà vẫn giữ nguyên tất cả các chữ số thập phân, bao gồm cả ví dụ mã X++.
Convert a Real to String with All Decimals in Dynamics AX 2012
Thông tin trong bài viết này dựa trên Dynamics AX 2012 R3. Thông tin này có thể không còn đúng đối với các phiên bản khác.
Thỉnh thoảng, tôi cần chuyển đổi một số thực thành chuỗi. Thông thường, chỉ cần truyền số đó vào hàm strFmt() là đủ, nhưng hàm đó luôn làm tròn đến hai chữ số thập phân, điều này không phải lúc nào cũng đúng với ý muốn của tôi.
Tiếp theo là hàm num2str(), hàm này hoạt động tốt, nhưng yêu cầu bạn phải biết trước mình muốn bao nhiêu chữ số thập phân và ký tự.
Nếu bạn chỉ muốn chuyển đổi số thành chuỗi, bao gồm cả chữ số và phần thập phân thì sao? Không hiểu sao, đây luôn là việc khiến tôi phải tìm kiếm trên Google vì thao tác này khá hiếm gặp và tôi lại ít khi làm nên thường không nhớ chính xác cách làm - trong hầu hết các ngôn ngữ lập trình, tôi nghĩ bạn chỉ cần nối số thực với một chuỗi rỗng, nhưng X++ không hỗ trợ điều đó.
Tóm lại, cách dễ nhất mà tôi tìm thấy để làm việc này là sử dụng lệnh gọi .NET. Có nhiều tùy chọn ở đây, có hoặc không có tùy chọn định dạng nâng cao, nhưng nếu bạn chỉ muốn chuyển đổi đơn giản một số thực sang chuỗi, thì cách này là đủ:
Nếu đoạn mã này cần được chạy trên AOS (ví dụ: trong một tác vụ xử lý hàng loạt), hãy nhớ xác nhận quyền truy cập mã cần thiết trước. Trong trường hợp này, bạn sẽ cần một InteropPermission thuộc loại ClrInterop để gọi mã .NET, vì vậy ví dụ mã đầy đủ sẽ trông giống như sau:
stringValue = System.Convert::ToString(realValue);
CodeAccessPermission::revertAssert();
Hãy lưu ý rằng hàm System::Convert đơn giản này sử dụng ngôn ngữ địa phương hiện tại của hệ thống liên quan đến ký tự dấu thập phân. Điều này có thể không phải là vấn đề đối với bạn, nhưng đối với tôi, người sống ở khu vực sử dụng dấu phẩy thay vì dấu chấm làm dấu phân cách thập phân, nó có thể yêu cầu xử lý thêm nếu chuỗi cần được sử dụng trong một tệp tin mà các hệ thống khác phải đọc được.
Đọc thêm
Nếu bạn thích bài viết này, bạn cũng có thể thích những gợi ý sau:
- Sự khác biệt giữa data() và buf2Buf() trong Dynamics AX 2012
- Xác định lớp tài liệu và truy vấn cho dịch vụ AIF trong Dynamics AX 2012
- Sử dụng SysExtension Framework để tìm ra lớp con nào để khởi tạo trong Dynamics AX 2012
