Miklix

Umbreyttu raun í streng með öllum aukastöfum í Dynamics AX 2012

Birt: 19. mars 2025 kl. 21:34:10 UTC

Í þessari grein útskýri ég hvernig á að breyta flottölu í streng á sama tíma og allir aukastafir eru varðveittir í Dynamics AX 2012, þar á meðal X++ kóðadæmi.


Þessi síða var vélþýdd úr ensku til að gera hana aðgengilega sem flestum. Því miður er vélþýðing ekki enn fullkomin tækni, svo villur geta komið upp. Ef þú vilt geturðu skoðað upprunalegu ensku útgáfuna hér:

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

Upplýsingarnar í þessari færslu byggja á Dynamics AX 2012 R3. Þær kunna að vera eða ekki vera gildar fyrir aðrar útgáfur.

Af og til þarf ég að breyta rauntölu í streng. Venjulega er það nóg að senda hana í strFmt(), en sú fall gerir alltaf kringum tveimur tugabrotum, sem er ekki alltaf það sem ég vil.

Svo er það num2str() fallið, sem virkar vel, en krefst þess að þú vitir fyrirfram hversu mörg tugabrot og stafi þú vilt.

Hvað ef þú vilt bara að talan verði breytt í streng, með öllum tölustöfum og tugabrotum? Af einhverjum ástæðum er þetta eitthvað sem ég er alltaf að leita eftir á Google því það er óvænt óljóst að gera þetta og ég geri það svo sjaldan að ég man venjulega ekki nákvæmlega hvernig - í flestum forritunarmálum myndi ég búast við að þú gætir bara tengt rauntöluna við tóman streng, en X++ styður það ekki.

Reyndar, auðveldasta leiðin sem ég hef fundið til að gera þetta er með því að nota .NET kall. Það eru margar valkostir hér einnig, með og án valkosta fyrir flókna útfærslu, en ef þú vilt bara mjög einfaldan breytinu á rauntölu í streng, þá nægir þetta:

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

Ef þessi kóði á að keyra á AOS (til dæmis í batch vinnu), mundu að staðfesta nauðsynlega leyfisveitingu fyrir kóðaávinning fyrst. Í þessu tilviki þarftu InteropPermission af gerðinni ClrInterop til að kalla .NET kóða, svo heildar kóða dæmið myndi líta eitthvað út eins og þetta:

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

Veit það að þetta einfaldlega System::Convert fall notar núverandi staðsetningu kerfisins með tilliti til tugabrotsmerkis. Þetta kann að vera ekki vandamál fyrir þig, en fyrir mig sem bý í svæði þar sem kommur eru notaðar frekar en punktur sem tugabrotsaðskiljari, gæti það krafist frekari úrvinnslu ef strengurinn þarf til dæmis að vera notaður í skrá sem verður að vera læsileg fyrir önnur kerfi.

Deildu á BlueskyDeildu á FacebookDeildu á LinkedInDeildu á TumblrDeildu á XDeildu á LinkedInFestu á Pinterest

Mikkel Christensen

Um höfundinn

Mikkel Christensen
Mikkel er skapari og eigandi miklix.com. Hann hefur yfir 20 ára reynslu sem faglegur tölvuforritari/hugbúnaðarhönnuður og er nú í fullu starfi hjá stóru evrópsku upplýsingatæknifyrirtæki. Þegar hann er ekki að blogga eyðir hann frítíma sínum í margs konar áhugamál, áhugamál og athafnir, sem geta að einhverju leyti endurspeglast í margs konar efni sem fjallað er um á þessari vefsíðu.