Miklix

Teisendage reaal kõigi kümnendkohtadega stringiks rakenduses Dynamics AX 2012

Avaldatud: 16. veebruar 2025, kell 10:40:30 UTC

Selles artiklis selgitan, kuidas teisendada ujukomaarv stringiks, säilitades Dynamics AX-i 2012 kõik kümnendkohad, sealhulgas X++ koodinäide.


See lehekülg on inglise keelest masintõlgitud, et muuta see võimalikult paljudele inimestele kättesaadavaks. Kahjuks ei ole masintõlge veel täiuslik tehnoloogia, mistõttu võivad esineda vead. Kui soovite, võite vaadata ingliskeelset originaalversiooni siin:

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

Selles postituses olev teave põhineb Dynamics AX-i 2012 R3-l. See võib teiste versioonide jaoks kehtida, kuid ei pruugi kehtida.

Aeg-ajalt pean reaalarvu teisendama stringiks. Tavaliselt piisab selle edastamisest strFmt()-le, kuid see funktsioon ümardab alati kahe kümnendkohani, mis pole alati see, mida ma tahan.

Siis on funktsioon num2str(), mis töötab hästi, kuid eeldab, et peaksite varakult teadma, kui palju koma ja märke soovite.

Mis siis, kui soovite, et number muudetaks stringiks, mis sisaldab kõiki numbreid ja kümnendkohti? Millegipärast paneb mind alati guugeldama, sest seda on üllatavalt ebaselge teha ja ma teen seda nii harva, et tavaliselt ei mäletagi täpselt, kuidas – enamikus programmeerimiskeeltes eeldaksin, et saate reaalse lihtsalt tühja stringiga ühendada, kuid X++ seda ei toeta.

Igatahes, kõige lihtsam viis, kuidas ma seda olen leidnud, on kasutada .NET-kõnet. Ka siin on mitu valikut, täiustatud vormindamise valikutega ja ilma, kuid kui soovite lihtsalt reaalvormingut stringiks teisendada, piisab sellest:

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

Kui seda koodi kavatsete käitada AOS-is (näiteks pakktööna), ärge unustage esmalt kinnitada vajalikku koodile juurdepääsu luba. Sel juhul vajate .NET-koodi kutsumiseks InteropPermissioni tüüpi ClrInterop, nii et täielik koodinäide näeks välja umbes selline:

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

Pidage meeles, et see lihtne funktsioon System::Convert kasutab kümnendkoha märgi suhtes süsteemi praegust lokaadi. See ei pruugi teie jaoks probleem olla, kuid minu jaoks, kes ma elan piirkonnas, kus kümnendkoha eraldajana kasutatakse koma, mitte punkti, võib see vajada täiendavat töötlemist, kui näiteks stringi on vaja kasutada failis, mis peab olema muude süsteemide jaoks loetav.

Jagage Bluesky'sJaga FacebookisJagage LinkedInisJaga TumblrisJaga X-isJagage LinkedInisKinnitage Pinterestis

Mikkel Bang Christensen

Autorist

Mikkel Bang Christensen
Mikkel on miklix.com looja ja omanik. Tal on üle 20 aasta kogemust professionaalse programmeerija/tarkvaraarendajana ning praegu töötab ta täiskohaga suures Euroopa IT-ettevõttes. Kui ta ei kirjuta blogi, veedab ta oma vaba aega mitmesuguste huvide, hobide ja tegevustega, mis võib mingil määral kajastuda sellel veebisaidil käsitletavate teemade mitmekesisuses.