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
Pēdējo reizi atjaunināts: 2026. gada 12. janvāris 08:50:52 UTC

Šajā rakstā es paskaidroju, kā Dynamics AX 2012 konvertēt peldošā komata skaitli par virkni, saglabājot visas decimāldaļas, 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ā ierakstā sniegtā informācija ir balstīta uz Dynamics AX 2012 R3. Tā var būt vai nebūt derīga citām versijām.

Ik pa laikam man ir jāpārveido reāls skaitlis par virkni. Parasti pietiek ar tā nodošanu strFmt(), bet šī funkcija vienmēr noapaļo līdz divām zīmēm aiz komata, kas ne vienmēr ir tas, ko es vēlos.

Tad vēl ir funkcija num2str(), kas darbojas labi, taču prasa iepriekš zināt, cik decimālzīmju un rakstzīmju vēlaties.

Ko darīt, ja vēlaties skaitli pārvērst virknē ar visiem cipariem un decimāldaļām? Kādu iemeslu dēļ tas mani vienmēr mudina meklēt informāciju Google, jo tas ir pārsteidzoši sarežģīti, un es to daru tik reti, ka parasti neatceros precīzi, kā to izdarīt. Vairumā programmēšanas valodu es sagaidītu, ka reālo skaitli var vienkārši savienot ar tukšu virkni, bet X++ to neatbalsta.

Jebkurā gadījumā, līdz šim vienkāršākais veids, kā to izdarīt, ir izmantot .NET izsaukumu. Arī šeit ir vairākas iespējas, ar un bez papildu formatēšanas opcijām, taču, ja vēlaties vienkārši konvertēt reālo skaitli uz virkni, pietiks ar šo:

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

Ja šis kods ir jāizpilda AOS (piemēram, pakešuzdevumā), atcerieties vispirms pieprasīt nepieciešamo koda piekļuves atļauju. Šajā gadījumā jums būs nepieciešama InteropPermission ar tipu ClrInterop, lai izsauktu .NET kodu, tāpēc pilns 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šā System::Convert funkcija izmanto sistēmas pašreizējo lokalizāciju attiecībā uz decimālzīmi. Jums tā, iespējams, nav problēma, bet man, kurš dzīvo apgabalā, kur kā decimāldaļu atdalītājs tiek izmantots komats, nevis punkts, var būt nepieciešama papildu apstrāde, ja, piemēram, virkne ir jāizmanto failā, kuram jābūt nolasāmam citām sistēmām.

Papildu lasāmviela

Ja jums patika šī ziņa, jums varētu patikt arī šie ieteikumi:


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

Mikkel Christensen

Par autoru

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