Miklix

„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į.


Šis puslapis buvo mašininiu būdu išverstas iš anglų kalbos, kad juo galėtų naudotis kuo daugiau žmonių. Deja, mašininis vertimas dar nėra tobula technologija, todėl gali pasitaikyti klaidų. Jei pageidaujate, originalią versiją anglų kalba galite peržiūrėti čia:

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:

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

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:

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


Pasidalinkite „Bluesky“.Dalintis FacebookBendrinkite „LinkedIn“.Bendrinkite „Tumblr“.Dalintis XBendrinkite „LinkedIn“.Prisegti prie Pinterest

Mikkel Christensen

Apie autorių

Mikkel Christensen
Mikkelis yra miklix.com kūrėjas ir savininkas. Jis turi daugiau nei 20 metų profesionalaus kompiuterių programuotojo ir programinės įrangos kūrėjo patirtį ir šiuo metu visą darbo dieną dirba didelėje Europos IT korporacijoje. Kai jis nerašo tinklaraščio, laisvalaikį skiria įvairiems interesams, pomėgiams ir užsiėmimams, kurie tam tikra prasme gali atsispindėti šioje svetainėje nagrinėjamų temų įvairovėje.