在 Dynamics AX 2012 中將實數轉換為帶有小數的字串
已發佈: 2025年2月16日 上午10:41:06 [UTC]
在本文中,我解釋瞭如何在 Dynamics AX 2012 中將浮點數轉換為字串同時保留所有小數,包括一個 X++ 程式碼範例。
該頁面是由英語機器翻譯而來的,以便盡可能多的人可以訪問。不幸的是,機器翻譯還不是一項完善的技術,因此可能會出現錯誤。如果您願意,可以在這裡查看原始英文版本:
Convert a Real to String with All Decimals in Dynamics AX 2012
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 上執行此程式碼(例如在批次作業中),請記住先聲明必要的程式碼存取權。在這種情況下,您需要一個 ClrInterop 類型的 InteropPermission 來呼叫 .NET 程式碼,因此完整的程式碼範例將如下所示:
new InteropPermission(InteropKind::ClrInterop).assert();
stringValue = System.Convert::ToString(realValue);
CodeAccessPermission::revertAssert();
stringValue = System.Convert::ToString(realValue);
CodeAccessPermission::revertAssert();
請注意,這個簡單的 System::Convert 函數使用系統目前的區域設定與小數點字元有關。對您來說這可能不是問題,但對於我這個生活在使用逗號而不是句點作為小數分隔符號的地區的人來說,如果字串需要在其他系統必須可讀的文件中 使用,則可能需要進一步處理。