Miklix

გადაიყვანეთ რეალური სიმებიანი ყველა ათობითი დინამიკაში AX 2012

გამოქვეყნებულია: 16 თებერვალი, 2025, 10:47:04 UTC
ბოლო განახლება: 12 იანვარი, 2026, 08:52:45 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-ზე უნდა გაუშვათ (მაგალითად, პაკეტურ სამუშაოში), არ დაგავიწყდეთ ჯერ კოდზე წვდომის საჭირო ნებართვის მოთხოვნა. ამ შემთხვევაში, .NET კოდის გამოსაძახებლად დაგჭირდებათ ClrInterop ტიპის InteropPermission, ამიტომ სრული კოდის მაგალითი დაახლოებით ასე გამოიყურება:

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

გაითვალისწინეთ, რომ ეს მარტივი System::Convert ფუნქცია იყენებს სისტემის მიმდინარე ლოკალს ათწილადის სიმბოლოსთან მიმართებაში. შესაძლოა ეს თქვენთვის პრობლემა არ იყოს, მაგრამ ჩემთვის, ვინც ისეთ ადგილას ვცხოვრობ, სადაც ათწილადის გამყოფად წერტილის ნაცვლად მძიმე გამოიყენება, შესაძლოა დამატებითი დამუშავება დასჭირდეს, თუ, მაგალითად, სტრიქონი უნდა იქნას გამოყენებული ფაილში, რომლის წაკითხვაც სხვა სისტემების მიერ უნდა იყოს შესაძლებელი.

დამატებითი საკითხავი

თუ ეს პოსტი მოგეწონათ, შეიძლება ეს რჩევებიც მოგეწონოთ:


გააზიარე Bluesky-ზეგააზიარეთ Facebook-ზეგააზიარეთ LinkedIn-ზეგააზიარეთ Tumblr-ზეგააზიარეთ X-ზეგააზიარეთ LinkedIn-ზეPinterest-ზე დამაგრება

მიკელ კრისტენსენი

ავტორის შესახებ

მიკელ კრისტენსენი
მაიკლ არის miklix.com-ის შემქმნელი და მფლობელი. მას აქვს 20 წელზე მეტი გამოცდილება, როგორც პროფესიონალი კომპიუტერული პროგრამისტი/პროგრამული უზრუნველყოფის შემქმნელი და ამჟამად მუშაობს სრულ განაკვეთზე დიდ ევროპულ IT კორპორაციაში. როდესაც ბლოგს არ წერს, თავისუფალ დროს ატარებს ინტერესების, ჰობიებისა და აქტივობების უზარმაზარ სპექტრზე, რაც შეიძლება გარკვეულწილად აისახოს ამ ვებსაიტზე გაშუქებულ თემებზე.