Miklix

Dynamics AX 2012 konvertējiet reālu par virkni ar visām decimāldaļām

Publicēts: 2025. gada 16. februāris 10:40:43 UTC

Šajā rakstā es paskaidroju, kā pārvērst peldošā komata skaitli par virkni, vienlaikus saglabājot visas decimāldaļas programmā Dynamics AX 2012, tostarp X++ koda piemēru.


Šī lapa tika mašīntulkota no angļu valodas, lai padarītu to pieejamu pēc iespējas vairāk cilvēkiem. Diemžēl mašīntulkošana vēl nav pilnīga tehnoloģija, tāpēc tajā var rasties kļūdas. Ja vēlaties, oriģinālo versiju angļu valodā varat apskatīt šeit:

Convert a Real to String with All Decimals in Dynamics AX 2012

Šajā ziņā sniegtā informācija ir balstīta uz Dynamics AX 2012 R3. Tas var būt un var nebūt derīgs citām versijām.

Ik pa laikam man ir jāpārvērš reāls skaitlis par virkni. Parasti pietiek tikai ar tās nodošanu strFmt(), taču šī funkcija vienmēr tiek noapaļota līdz diviem cipariem aiz komata, kas ne vienmēr ir tas, ko es vēlos.

Pēc tam ir funkcija num2str(), kas darbojas labi, taču jums jau laikus jāzina, cik decimālskaitļus un rakstzīmes vēlaties.

Ko darīt, ja vēlaties, lai skaitlis tiktu pārveidots par virkni ar visiem cipariem un decimāldaļām? Kādu iemeslu dēļ es vienmēr meklēju Google, jo tas ir pārsteidzoši neskaidrs, un es to daru tik reti, ka parasti nevaru precīzi atcerēties, kā tas notika — vairumā programmēšanas valodu varētu vienkārši savienot reālo ar tukšu virkni, bet X++ to neatbalsta.

Jebkurā gadījumā vienkāršākais veids, kā to izdarīt, ir izmantot .NET zvanu. Šeit ir arī vairākas iespējas — ar un bez papildu formatēšanas opcijām, taču, ja vēlaties vienkārši pārvērst reālu par virkni, pietiks ar to:

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

Ja šis kods ir jāpalaiž AOS (piemēram, pakešdarbā), atcerieties vispirms pieprasīt nepieciešamo kodu piekļuves atļauju. Šajā gadījumā, lai izsauktu .NET kodu, jums būs nepieciešama ClrInterop tipa InteropPermission, tāpēc pilnais koda piemērs izskatītos apmēram šādi:

new InteropPermission(InteropKind::ClrInterop).assert();
stringValue = System.Convert::ToString(realValue);
CodeAccessPermission::revertAssert();

Ņemiet vērā, ka šī vienkāršā funkcija System::Convert izmanto sistēmas pašreizējo lokalizāciju attiecībā uz decimālzīmi. Iespējams, šī problēma jums nav aktuāla, taču man, kas dzīvo apgabalā, kur kā decimāldaļskaitļa atdalītājs tiek izmantots komats, nevis punkts, var būt nepieciešama turpmāka apstrāde, ja, piemēram, virkne ir jāizmanto failā, kam jābūt lasāmam citām sistēmām.

Kopīgojiet pakalpojumā BlueskyKopīgot FacebookKopīgojiet vietnē LinkedInKopīgojiet vietnē TumblrKopīgot vietnē XKopīgojiet vietnē LinkedInPiespraust vietnē Pinterest

Mikkel Bang Christensen

Par autoru

Mikkel Bang Christensen
Mikels ir miklix.com radītājs un īpašnieks. Viņam ir vairāk nekā 20 gadu pieredze kā profesionālam programmētājam/programmatūras izstrādātājam, un pašlaik viņš strādā pilna laika darbu lielā Eiropas IT korporācijā. Kad viņš neraksta blogus, viņš pavada brīvo laiku, pievēršoties dažādām interesēm, hobijiem un aktivitātēm, kas zināmā mērā var atspoguļoties šajā tīmekļa vietnē aplūkoto tēmu daudzveidībā.