Miklix

Konvertoni një real në varg me të gjithë numrat dhjetorë në Dynamics AX 2012

Publikuar: 16 shkurt 2025 në 10:46:14 e paradites, UTC

Në këtë artikull, unë shpjegoj se si të konvertohet një numër me pikë lundruese në një varg duke ruajtur të gjitha dhjetoret në Dynamics AX 2012, duke përfshirë një shembull të kodit X++.


Kjo faqe u përkthye me makinë nga anglishtja për ta bërë të aksesueshme për sa më shumë njerëz. Fatkeqësisht, përkthimi me makinë nuk është ende një teknologji e përsosur, kështu që mund të ndodhin gabime. Nëse preferoni, mund ta shikoni versionin origjinal në anglisht këtu:

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

Informacioni në këtë postim bazohet në Dynamics AX 2012 R3. Mund të jetë ose jo e vlefshme për versionet e tjera.

Herë pas here, më duhet të konvertoj një numër real në një varg. Zakonisht, mjafton vetëm kalimi në strFmt(), por ai funksion gjithmonë rrumbullakoset në dy dhjetore, gjë që nuk është gjithmonë ajo që dua.

Më pas është funksioni num2str(), i cili funksionon mirë, por kërkon që të dini paraprakisht sa dhjetore dhe karaktere dëshironi.

Po sikur të dëshironi që numri të konvertohet në një varg, me të gjitha shifrat dhe dhjetoret? Për disa arsye, kjo është diçka që më ka bërë gjithmonë në Google, sepse është çuditërisht e paqartë për ta bërë dhe e bëj aq rrallë sa zakonisht nuk e mbaj mend saktësisht se si - në shumicën e gjuhëve programuese, do të prisja që thjesht ta lidhni realen me një varg bosh, por X++ nuk e mbështet këtë.

Gjithsesi, mënyra shumë më e lehtë që kam gjetur për ta bërë këtë është duke përdorur një thirrje .NET. Ekzistojnë gjithashtu opsione të shumta këtu, me dhe pa opsione për formatim të avancuar, por nëse dëshironi vetëm konvertimin vërtet të thjeshtë të një reale në një varg, kjo do të mjaftojë:

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

Nëse ky kod do të ekzekutohet në AOS (për shembull në një punë grupore), mos harroni të kërkoni së pari lejen e nevojshme të hyrjes në kod. Në këtë rast do t'ju duhet një InteropPermission i llojit ClrInterop për të thirrur kodin .NET, kështu që shembulli i kodit të plotë do të duket diçka si kjo:

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

Kini parasysh se ky funksion i thjeshtë System::Convert përdor vendndodhjen aktuale të sistemit në lidhje me karakterin e pikës dhjetore. Ky mund të mos jetë një problem për ju, por për mua që jetoj në një zonë ku përdoret presja dhe jo pika si ndarës dhjetore, mund të kërkojë përpunim të mëtejshëm nëse vargu për shembull duhet të përdoret në një skedar që duhet të lexohet nga sisteme të tjera.

Shpërndaje në BlueskyShpërndaje në FacebookNdani në LinkedInShpërndaje në TumblrShpërndaje në XNdani në LinkedInPin në Pinterest

Mikkel Bang Christensen

Rreth Autorit

Mikkel Bang Christensen
Mikkel është krijuesi dhe pronari i miklix.com. Ai ka mbi 20 vjet përvojë si programues profesional kompjuteri/zhvillues softuerësh dhe aktualisht është i punësuar me kohë të plotë për një korporatë të madhe evropiane IT. Kur nuk bën blog, ai e kalon kohën e lirë në një gamë të gjerë interesash, hobish dhe aktivitetesh, të cilat mund të reflektohen në një farë mase në shumëllojshmërinë e temave të mbuluara në këtë faqe interneti.