Преобразуване на реален в низ с всички десетични знаци в Dynamics AX 2012
Публикувано: 16 февруари 2025 г. в 10:40:24 ч. UTC
Последна актуализация: 12 януари 2026 г. в 8:50:43 ч. 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 използва текущата локализация на системата по отношение на десетичната запетая. Това може да не е проблем за вас, но за мен, който живея в район, където се използва запетая, а не точка като десетичен разделител, може да се изисква допълнителна обработка, ако например низът трябва да се използва във файл, който трябва да може да се чете от други системи.
Допълнително четене
Ако ви е харесала тази публикация, може да ви харесат и тези предложения:
- Разликата между data() и buf2Buf() в Dynamics AX 2012
- Идентифициране на клас документ и заявка за AIF услуга в Dynamics AX 2012
- Форматиране на низове с Macro и strFmt в Dynamics AX 2012
