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