„Dynamics AX 2012“ konvertuokite realųjį į eilutę su visais dešimtainiais skaičiais
Paskelbta: 2025 m. vasario 16 d. 10:40:41 UTC
Paskutinį kartą atnaujinta: 2026 m. sausio 12 d. 08:50:51 UTC
Šiame straipsnyje paaiškinu, kaip „Dynamics AX 2012“ programoje konvertuoti slankiojo kablelio skaičių į eilutę, išsaugant visus dešimtaines trupmenas, į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“. Ji gali tikti arba netikti kitoms versijoms.
Kartkartėmis man reikia realųjį skaičių konvertuoti į eilutę. Paprastai užtenka tiesiog perduoti jį funkcijai strFmt(), bet ši funkcija visada suapvalina iki dviejų skaičių po kablelio, o to ne visada noriu.
Taip pat yra funkcija num2str(), kuri veikia gerai, bet reikalauja iš anksto žinoti, kiek dešimtainių trupmenų ir simbolių norite.
Jeigu norite, kad skaičius būtų konvertuotas į eilutę su visais skaitmenimis ir dešimtainiais skaičiais? Dėl kažkokios priežasties tai mane visada verčia ieškoti „Google“, nes tai stebėtinai sudėtinga padaryti, ir aš tai darau taip retai, kad dažniausiai tiksliai neprisimenu, kaip – daugumoje programavimo kalbų tikėčiausi, kad realųjį skaičių galima tiesiog sujungti su tuščia eilute, bet „X++“ to nepalaiko.
Šiaip ar taip, lengviausias būdas, kurį radau, yra naudoti .NET iškvietimą. Čia taip pat yra keletas variantų, su ir be išplėstinio formatavimo parinkčių, bet jei norite tiesiog labai paprasto realaus skaičiaus konvertavimo į eilutę, pakaks to:
Jei šis kodas bus vykdomas AOS (pavyzdžiui, paketinėje užduotyje), nepamirškite pirmiausia gauti reikiamą kodo prieigos leidimą. Tokiu atveju, norint iškviesti .NET kodą, reikės „ClrInterop“ tipo „InteropPermission“, todėl visas kodo pavyzdys atrodytų maždaug taip:
stringValue = System.Convert::ToString(realValue);
CodeAccessPermission::revertAssert();
Atminkite, kad ši paprasta „System::Convert“ funkcija naudoja dabartinę sistemos lokalizaciją dešimtainio taško atžvilgiu. Jums tai gali būti ne problema, bet man, gyvenu vietovėje, kurioje dešimtainis skyriklis naudojamas kablelis, o ne taškas, gali reikėti tolesnio apdorojimo, jei, pavyzdžiui, eilutę reikia naudoti faile, kurį turi skaityti kitos sistemos.
Papildoma literatūra
Jei jums patiko šis įrašas, jums taip pat gali patikti šie pasiūlymai:
- Kaip kartoti Enum elementus iš X++ kodo „Dynamics AX 2012“
- Skirtumas tarp duomenų () ir buf2Buf () Dynamics AX 2012
- „SysExtension Framework“ naudojimas norint sužinoti, kurį poklasį reikia sukurti „Dynamics AX 2012“
