Miklix

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

Trong bài viết này, tôi sẽ giải thích cách chuyển đổi số dấu phẩy động thành chuỗi trong khi vẫn giữ nguyên tất cả số thập phân trong Dynamics AX 2012, bao gồm ví dụ về mã X++.


Trang này được dịch máy từ tiếng Anh để có thể tiếp cận được với nhiều người nhất có thể. Thật không may, dịch máy vẫn chưa phải là công nghệ hoàn thiện, do đó có thể xảy ra lỗi. Nếu bạn thích, bạn có thể xem phiên bản tiếng Anh gốc tại đây:

Convert a Real to String with All Decimals in Dynamics AX 2012

Thông tin trong bài đăng này dựa trên Dynamics AX 2012 R3. Thông tin này có thể đúng hoặc không đúng 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 nó vào strFmt() là đủ, nhưng hàm đó luôn làm tròn thành hai chữ số thập phân, không phải lúc nào cũng là điều tôi muốn.

Sau đó, có hàm num2str(), hoạt động tốt nhưng yêu cầu bạn phải biết trước số lượng chữ số thập phân và ký tự mà bạn muốn.

Còn nếu bạn chỉ muốn số được chuyển đổi thành chuỗi, với tất cả các chữ số và số thập phân thì sao? Vì một lý do nào đó, đây là điều mà tôi luôn phải tìm kiếm trên Google vì nó khá khó hiểu và tôi hiếm khi làm đến mức tôi thường không nhớ chính xác cách thực hiện - trong hầu hết các ngôn ngữ lập trình, tôi mong đợi rằng bạn có thể chỉ cần nối số thực thành một chuỗi rỗng, nhưng X++ không hỗ trợ điều đó.

Dù sao thì, cách dễ nhất mà tôi tìm thấy để thực hiện điều này là sử dụng lệnh gọi .NET. Cũng có nhiều tùy chọn ở đây, có và 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 thực sự đơn giản từ số thực sang chuỗi, thì cách này sẽ đủ:

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

Nếu mã này được chạy trên AOS (ví dụ trong một tác vụ 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 InteropPermission loại ClrInterop để gọi mã .NET, vì vậy ví dụ mã đầy đủ sẽ trông giống như thế này:

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

Xin lưu ý rằng hàm System::Convert đơn giản này sử dụng ngôn 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, có thể cần xử lý thêm nếu chuỗi ví dụ cần được sử dụng trong tệp mà các hệ thống khác phải đọc được.

Chia sẻ trên BlueskyChia sẻ trên FacebookChia sẻ trên LinkedInChia sẻ trên TumblrChia sẻ trên XChia sẻ trên LinkedInGhim trên Pinterest

Mikkel Bang Christensen

Về tác giả

Mikkel Bang Christensen
Mikkel là người sáng lập và chủ sở hữu của miklix.com. Ông có hơn 20 năm kinh nghiệm làm lập trình viên máy tính/nhà phát triển phần mềm chuyên nghiệp và hiện đang làm việc toàn thời gian cho một tập đoàn CNTT lớn của Châu Âu. Khi không viết blog, ông dành thời gian rảnh rỗi cho nhiều sở thích, thú vui và hoạt động, có thể được phản ánh ở một mức độ nào đó trong nhiều chủ đề được đề cập trên trang web này.