Miklix

Skakel 'n reële na string met alle desimale in Dynamics AX 2012

Gepubliseer: 16 Februarie 2025 om 10:46:15 UTC

In hierdie artikel verduidelik ek hoe om 'n swaaipuntgetal na 'n string om te skakel, terwyl alle desimale in Dynamics AX 2012 bewaar word, insluitend 'n X++-kodevoorbeeld.


Hierdie bladsy is masjienvertaal uit Engels om dit vir soveel mense moontlik toeganklik te maak. Ongelukkig is masjienvertaling nog nie 'n volmaakte tegnologie nie, dus kan foute voorkom. As jy verkies, kan jy die oorspronklike Engelse weergawe hier sien:

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

Die inligting in hierdie pos is gebaseer op Dynamics AX 2012 R3. Dit mag of mag nie geldig wees vir ander weergawes nie.

Ek moet elke af en toe 'n reële getal na 'n string omskakel. Gewoonlik is dit genoeg om dit net na strFmt() deur te gee, maar daardie funksie rond altyd af tot twee desimale, wat nie altyd is wat ek wil hê nie.

Dan is daar die num2str()-funksie, wat wel goed werk, maar vereis dat jy voor die tyd weet hoeveel desimale en karakters jy wil hê.

Wat as jy net wil hê dat die getal na 'n string omgeskakel word, met alle syfers en desimale? Om een ​​of ander rede is dit iets wat my altyd laat google, want dit is verbasend onduidelik om te doen en ek doen dit so selde dat ek gewoonlik nie presies kan onthou hoe nie - in die meeste programmeertale sou ek verwag dat jy net die regte tot 'n leë string kan aaneenskakel, maar X++ ondersteun dit nie.

In elk geval, die verreweg maklikste manier wat ek gevind het om dit te doen, is deur 'n .NET-oproep te gebruik. Daar is ook verskeie opsies hier, met en sonder opsies vir gevorderde formatering, maar as jy net die baie eenvoudige omskakeling van 'n ware na 'n string wil hê, sal dit voldoende wees:

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

As hierdie kode op die AOS uitgevoer moet word (byvoorbeeld in 'n bondelwerk), onthou om eers die nodige kodetoegangtoestemming te bevestig. In hierdie geval sal jy 'n InteropPermission van tipe ClrInterop nodig hê om .NET-kode te bel, so die volledige kodevoorbeeld sal iets soos volg lyk:

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

Wees bewus daarvan dat hierdie eenvoudige System::Convert-funksie die stelsel se huidige ligging gebruik met betrekking tot desimale puntkarakter. Dit is dalk nie vir jou 'n probleem nie, maar vir my wat in 'n area woon waar komma eerder as punt as desimale skeier gebruik word, kan dit verdere verwerking verg as die string byvoorbeeld gebruik moet word in 'n lêer wat deur ander stelsels leesbaar moet wees.

Deel op BlueskyDeel op FacebookDeel op LinkedInDeel op TumblrDeel op XDeel op LinkedInSpeld op Pinterest

Mikkel Bang Christensen

Oor die skrywer

Mikkel Bang Christensen
Mikkel is die skepper en eienaar van miklix.com. Hy het meer as 20 jaar ondervinding as 'n professionele rekenaarprogrammeerder/sagteware-ontwikkelaar en is tans voltyds in diens van 'n groot Europese IT-korporasie. Wanneer hy nie blog nie, spandeer hy sy vrye tyd aan 'n groot verskeidenheid belangstellings, stokperdjies en aktiwiteite, wat tot 'n mate weerspieël kan word in die verskeidenheid onderwerpe wat op hierdie webwerf gedek word.