Преобразуване на реален в низ с всички десетични знаци в Dynamics AX 2012
Публикувано: 16 февруари 2025 г. в 10:40:24 ч. 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 повикване. Тук също има множество опции, със и без опции за разширено форматиране, но ако просто искате наистина просто преобразуване на реално в низ, това ще е достатъчно:
Ако този код трябва да се изпълнява на AOS (например в пакетно задание), не забравяйте първо да потвърдите необходимото разрешение за достъп до код. В този случай ще ви е необходимо InteropPermission от тип ClrInterop, за да извикате .NET код, така че пълният пример за код ще изглежда така:
stringValue = System.Convert::ToString(realValue);
CodeAccessPermission::revertAssert();
Имайте предвид, че тази проста функция System::Convert използва текущата езикова променлива на системата по отношение на знака от десетична запетая. Това може да не е проблем за вас, но за мен, който живея в район, където се използва запетая, а не точка като десетичен разделител, може да се наложи допълнителна обработка, ако низът например трябва да се използва във файл, който трябва да се чете от други системи.