המר ריאל למחרוזת עם כל הספרות העשרוניות ב- Dynamics AX 2012
פורסם: 16 בפברואר 2025 בשעה 10:41:20 UTC
במאמר זה, אני מסביר כיצד להמיר מספר נקודה צפה למחרוזת תוך שמירה על כל הספרות העשרוניות ב- Dynamics AX 2012, כולל דוגמה של קוד X++.
Convert a Real to String with All Decimals in Dynamics AX 2012
המידע בפוסט זה מבוסס על Dynamics AX 2012 R3. זה עשוי להיות תקף עבור גרסאות אחרות או לא.
מדי פעם, אני צריך להמיר מספר אמיתי למחרוזת. בדרך כלל, רק להעביר אותו ל-strFmt() מספיק, אבל הפונקציה הזו תמיד מתעגלת לשני עשרונים, וזה לא תמיד מה שאני רוצה.
ואז יש את הפונקציה num2str(), שאמנם עובדת היטב, אבל מחייבת אותך לדעת מראש כמה עשרונים ותווים אתה רוצה.
מה אם אתה רק רוצה שהמספר יומר למחרוזת, עם כל הספרות והעשרוניות? מסיבה כלשהי, זה משהו שתמיד גורם לי לגוגל כי זה לא ברור באופן מפתיע ואני עושה את זה כל כך נדיר שבדרך כלל אני לא זוכר בדיוק איך - ברוב שפות התכנות, הייתי מצפה שאפשר פשוט לשרשר את המציאות למחרוזת ריקה, אבל X++ לא תומך בזה.
בכל מקרה, הדרך הקלה ביותר שמצאתי לעשות זאת היא באמצעות שיחת NET. ישנן מספר אפשרויות גם כאן, עם ובלי אפשרויות לעיצוב מתקדם, אבל אם אתה רק רוצה המרה ממש פשוטה של ריאל למחרוזת, זה יספיק:
אם קוד זה אמור להיות מופעל ב-AOS (לדוגמה בעבודת אצווה), זכור להצהיר תחילה על הרשאת הגישה הדרושה לקוד. במקרה זה תזדקק ל-InteropPermission מסוג ClrInterop כדי לקרוא לקוד NET, כך שדוגמאת הקוד המלאה תיראה בערך כך:
stringValue = System.Convert::ToString(realValue);
CodeAccessPermission::revertAssert();
שים לב שפונקציית System::Convert הפשוטה הזו משתמשת במקום הנוכחי של המערכת ביחס לנקודה עשרונית. זה אולי לא מהווה בעיה עבורך, אבל עבורי שגר באזור שבו נעשה שימוש בפסיק ולא בנקודה כמפריד עשרוני, זה עשוי לדרוש עיבוד נוסף אם המחרוזת למשל צריכה לשמש בקובץ שחייב להיות קריא על ידי מערכות אחרות.