Miklix

I-convert ang Real sa String gamit ang Lahat ng Decimal sa Dynamics AX 2012

Nai-publish: Marso 19, 2025 nang 9:34:15 PM UTC

Sa artikulong ito, ipinapaliwanag ko kung paano i-convert ang isang floating point number sa isang string habang pinapanatili ang lahat ng mga decimal sa Dynamics AX 2012, kabilang ang isang halimbawa ng X++ code.


Ang pahinang ito ay isinalin sa makina mula sa Ingles upang gawin itong naa-access sa pinakamaraming tao hangga't maaari. Sa kasamaang palad, ang pagsasalin ng makina ay hindi pa isang perpektong teknolohiya, kaya maaaring mangyari ang mga error. Kung gusto mo, maaari mong tingnan ang orihinal na bersyong Ingles dito:

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

Ang impormasyon sa post na ito ay batay sa Dynamics AX 2012 R3. Maaaring hindi ito wasto para sa ibang mga bersyon.

Paminsan-minsan, kailangan kong i-convert ang isang tunay na numero sa isang string. Karaniwan, sapat na ang pagpapasa nito sa strFmt(), ngunit ang function na iyon ay laging nire-round off sa dalawang decimal, na hindi laging angkop sa gusto ko.

Mayroon ding num2str() function, na gumagana nang maayos, ngunit nangangailangan na alam mo nang maaga kung ilang decimal at karakter ang nais mo.

Paano kung gusto mo lamang i-convert ang numero sa isang string, kasama ang lahat ng digit at decimal? Sa ilang dahilan, ito ay isang bagay na laging nagpapa-Google sa akin dahil medyo mahirap gawin at ginagawa ko ito nang bihirang kaya hindi ko madalas maalala kung paano - sa karamihan ng mga programming languages, inaasahan kong maaari mong i-concatenate ang tunay na numero sa isang empty string, ngunit hindi ito sinusuportahan ng X++.

Sa anumang kaso, ang pinakamadaling paraan na nahanap ko upang gawin ito ay sa pamamagitan ng paggamit ng .NET call. Mayroong maraming mga opsyon dito, may at walang mga opsyon para sa advanced formatting, ngunit kung nais mo lamang ng simpleng conversion ng isang tunay na numero sa isang string, sapat na ito:

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

Kung ang code na ito ay tatakbo sa AOS (halimbawa sa isang batch job), tandaan na i-assert ang kinakailangang code access permission muna. Sa kasong ito, kakailanganin mo ng isang InteropPermission ng uri ng ClrInterop upang tawagan ang .NET code, kaya ang buong halimbawa ng code ay magiging ganito:

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

Mag-ingat na ang simpleng System::Convert function na ito ay gumagamit ng kasalukuyang locale ng sistema kaugnay sa character ng decimal point. Maaaring hindi ito isyu para sa iyo, ngunit para sa akin na nakatira sa isang lugar kung saan ang kuwit ang ginagamit kaysa tuldok bilang decimal separator, maaaring mangailangan ng karagdagang proseso kung ang string halimbawa ay kailangang gamitin sa isang file na kailangang basahin ng ibang mga sistema.

Ibahagi sa BlueskyIbahagi sa FacebookIbahagi sa LinkedInIbahagi sa TumblrIbahagi sa XIbahagi sa LinkedInI-pin sa Pinterest

Mikkel Christensen

Tungkol sa May-akda

Mikkel Christensen
Si Mikkel ang lumikha at may-ari ng miklix.com. Siya ay may higit sa 20 taong karanasan bilang isang propesyonal na computer programmer/software developer at kasalukuyang nagtatrabaho ng full-time para sa isang malaking European IT corporation. Kapag hindi nagba-blog, ginugugol niya ang kanyang bakanteng oras sa isang malawak na hanay ng mga interes, libangan, at aktibidad, na maaaring sa ilang lawak ay makikita sa iba't ibang mga paksang sakop sa website na ito.