Փոխարկել իրականը լարում բոլոր decimals հետ Դինամիկայում AX 2012

Հրապարակվել է՝ 16 փետրվարի, 2025 թ., 10:46:35 UTC
Վերջին թարմացումը՝ 12 հունվարի, 2026 թ., 08:52:42 UTC

Այս հոդվածում ես բացատրում եմ, թե ինչպես Dynamics AX 2012-ում լողացող կետային թիվը վերածել տողի՝ պահպանելով բոլոր տասնորդական նիշերը, ներառյալ X++ կոդի օրինակը։


Այս էջը ավտոմատ կերպով թարգմանվել է անգլերենից՝ հնարավորինս շատ մարդկանց համար հասանելի դարձնելու համար: Ցավոք, մեքենայական թարգմանությունը դեռ կատարելագործված տեխնոլոգիա չէ, ուստի կարող են սխալներ առաջանալ: Եթե ​​նախընտրում եք, կարող եք դիտել բնօրինակ անգլերեն տարբերակը այստեղ.

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

Այս գրառման մեջ տեղեկատվությունը հիմնված է Dynamics AX 2012 R3-ի վրա: Այն կարող է վավեր լինել կամ չլինել այլ տարբերակների համար:

Ժամանակ առ ժամանակ ես պետք է իրական թիվը վերածեմ տողի։ Սովորաբար, պարզապես այն strFmt() ֆունկցիային փոխանցելը բավարար է, բայց այդ ֆունկցիան միշտ կլորացնում է մինչև երկու տասնորդական նիշ, ինչը միշտ չէ, որ ես ուզում եմ։

Այնուհետև կա num2str() ֆունկցիան, որը լավ է աշխատում, բայց պահանջում է, որ դուք նախապես իմանաք, թե քանի տասնորդական նիշ և նիշ եք ուզում։

Ի՞նչ անել, եթե ուզում եք, որ թիվը պարզապես վերածվի տողի՝ բոլոր թվանշաններով և տասնորդականներով։ Ինչ-ինչ պատճառներով սա այն բանն է, որը միշտ ստիպում է ինձ Google-ում որոնել, քանի որ զարմանալիորեն անհասկանալի է, և ես դա այնքան հազվադեպ եմ անում, որ սովորաբար չեմ կարողանում հիշել, թե ինչպես։ Ծրագրավորման լեզուների մեծ մասում ես կսպասեի, որ դուք կարող եք պարզապես իրական թիվը միացնել դատարկ տողի, բայց X++-ը դա չի աջակցում։

Ամեն դեպքում, սա անելու ամենահեշտ ձևը, որը ես գտել եմ, .NET կանչի օգտագործումն է: Այստեղ նույնպես կան բազմաթիվ տարբերակներ՝ առաջադեմ ձևաչափման տարբերակներով և առանց դրանց, բայց եթե դուք պարզապես ցանկանում եք իրական թիվը տողի շատ պարզ փոխակերպել, սա բավարար կլինի.

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

Եթե այս կոդը պետք է աշխատեցվի AOS-ի վրա (օրինակ՝ խմբային աշխատանքի ժամանակ), մի մոռացեք նախ հաստատել կոդին մուտք գործելու անհրաժեշտ թույլտվությունը: Այս դեպքում ձեզ անհրաժեշտ կլինի ClrInterop տիպի InteropPermission՝ .NET կոդը կանչելու համար, ուստի ամբողջական կոդի օրինակը կունենա մոտավորապես հետևյալ տեսքը՝

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

Հաշվի առեք, որ այս պարզ System::Convert ֆունկցիան օգտագործում է համակարգի ընթացիկ տեղայնացումը տասնորդական կետի նկատմամբ: Սա կարող է խնդիր չլինել ձեզ համար, բայց ինձ համար, ով ապրում է մի տարածքում, որտեղ տասնորդական բաժանարարի համար կետի փոխարեն օգտագործվում է ստորակետ, այն կարող է լրացուցիչ մշակման կարիք ունենալ, եթե, օրինակ, տողը պետք է օգտագործվի այնպիսի ֆայլում, որը պետք է կարդացվի այլ համակարգերի կողմից:

Լրացուցիչ ընթերցանություն

Եթե ​​ձեզ դուր եկավ այս գրառումը, ձեզ կարող են նաև դուր գալ այս առաջարկները.


Կիսվեք Bluesky-ումԿիսվել Facebook-ումԿիսվեք LinkedIn-ումԿիսվեք Tumblr-ումԿիսվեք X-ումԿպցնել ՊինթրեսթումԿիսվեք Reddit-ում

Միկել Քրիստենսեն

Հեղինակի մասին

Միկել Քրիստենսեն
Mikkel-ը miklix.com-ի ստեղծողն ու սեփականատերն է: Նա ունի ավելի քան 20 տարվա աշխատանքային փորձ՝ որպես պրոֆեսիոնալ համակարգչային ծրագրավորող/ծրագրային ապահովման մշակող և ներկայումս լրիվ դրույքով աշխատում է եվրոպական խոշոր ՏՏ կորպորացիայի մեջ: Երբ նա բլոգ չի գրում, նա իր ազատ ժամանակն անցկացնում է հետաքրքրությունների, հոբբիների և գործունեության լայն շրջանակի վրա, որոնք որոշ չափով կարող են արտացոլվել այս կայքում ընդգրկված թեմաների բազմազանության մեջ: