Miklix

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


Š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. 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:

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

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:

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

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

Mikkel Bang Christensen

Apie autorių

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