„Dynamics AX 2012“ konvertuokite realųjį į eilutę su visais dešimtainiais skaičiais
Paskelbta: 2025 m. vasario 16 d. 10:40:41 UTC
Šiame straipsnyje paaiškinu, kaip konvertuoti slankiojo kablelio skaičių į eilutę, išsaugant visus po kablelio skaičius sistemoje Dynamics AX 2012, įskaitant X++ kodo pavyzdį.
Convert a Real to String with All Decimals in Dynamics AX 2012
Šiame įraše pateikta informacija pagrįsta Dynamics AX 2012 R3. Jis gali galioti arba negalioja kitoms versijoms.
Kartkartėmis man reikia realųjį skaičių konvertuoti į eilutę. Paprastai pakanka tik perduoti jį į strFmt(), bet ši funkcija visada suapvalinama iki dviejų skaičių po kablelio, o tai ne visada yra tai, ko noriu.
Tada yra funkcija num2str(), kuri veikia gerai, tačiau reikia iš anksto žinoti, kiek kablelio ir simbolių norite.
Ką daryti, jei norite, kad skaičius būtų konvertuotas į eilutę su visais skaitmenimis ir dešimtainėmis dalimis? Kažkodėl tai nuolat verčia „Google“ naršyti, nes tai stebėtinai neaišku ir darau tai taip retai, kad dažniausiai neatsimenu, kaip tiksliai – daugumoje programavimo kalbų tikėčiau, kad galite tiesiog sujungti tikrąją į tuščią eilutę, tačiau X++ to nepalaiko.
Bet kokiu atveju, pats lengviausias būdas tai padaryti yra naudojant .NET skambutį. Čia taip pat yra keletas parinkčių, su išplėstinio formatavimo parinktimis ir be jų, bet jei norite tik labai paprasto realaus konvertavimo į eilutę, pakaks to:
Jei šis kodas turi būti paleistas AOS (pavyzdžiui, paketiniame užduotyje), nepamirškite pirmiausia patvirtinti reikiamo kodo prieigos leidimo. Tokiu atveju jums reikės ClrInterop tipo InteropPermission, kad galėtumėte iškviesti .NET kodą, todėl visas kodo pavyzdys atrodytų maždaug taip:
stringValue = System.Convert::ToString(realValue);
CodeAccessPermission::revertAssert();
Atminkite, kad ši paprasta funkcija System::Convert naudoja esamą sistemos lokalę dešimtainio kablelio atžvilgiu. Galbūt tai nėra problema jums, bet man, gyvenančiam srityje, kurioje kaip dešimtainis skyriklis naudojamas kablelis, o ne taškas, gali reikėti toliau apdoroti, jei, pavyzdžiui, eilutę reikia naudoti faile, kurį turi skaityti kitos sistemos.