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
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++.


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 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à đủ:

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

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:

new InteropPermission(InteropKind::ClrInterop).assert();
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:


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 Christensen

Về tác giả

Mikkel 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.