Miklix

تبدیل یک واقعی به رشته با تمام اعشار در Dynamics AX 2012

منتشر شده: ۱۶ فوریهٔ ۲۰۲۵ ساعت ۱۰:۴۱:۱۵ (UTC)
آخرین به روز رسانی: ۱۲ ژانویهٔ ۲۰۲۶ ساعت ۸:۵۲:۳۲ (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 است. در اینجا نیز گزینه‌های متعددی وجود دارد، با و بدون گزینه‌های قالب‌بندی پیشرفته، اما اگر فقط تبدیل بسیار ساده یک عدد حقیقی به یک رشته را می‌خواهید، این کافی است:

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

اگر قرار است این کد روی AOS اجرا شود (مثلاً در یک کار دسته‌ای)، به یاد داشته باشید که ابتدا مجوز دسترسی به کد لازم را تعیین کنید. در این حالت، برای فراخوانی کد .NET به یک InteropPermission از نوع ClrInterop نیاز خواهید داشت، بنابراین مثال کامل کد چیزی شبیه به این خواهد بود:

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

توجه داشته باشید که این تابع ساده‌ی System::Convert از موقعیت مکانی فعلی سیستم در رابطه با کاراکتر نقطه اعشار استفاده می‌کند. این ممکن است برای شما مشکلی ایجاد نکند، اما برای من که در منطقه‌ای زندگی می‌کنم که به جای نقطه از کاما به عنوان جداکننده‌ی اعشار استفاده می‌شود، اگر مثلاً رشته نیاز به استفاده در فایلی داشته باشد که باید توسط سایر سیستم‌ها قابل خواندن باشد، ممکن است به پردازش بیشتری نیاز داشته باشد.

مطالعه بیشتر

اگر از این پست لذت بردید، ممکن است این پیشنهادات را نیز بپسندید:


در Bluesky به اشتراک بگذاریددر فیسبوک به اشتراک بگذاریددر لینکدین به اشتراک بگذاریددر Tumblr به اشتراک بگذاریددر X به اشتراک بگذاریددر لینکدین به اشتراک بگذاریدپین در پینترست

میکل کریستنسن

درباره نویسنده

میکل کریستنسن
مایکل خالق و صاحب miklix.com است. او بیش از 20 سال تجربه به عنوان یک برنامه نویس حرفه ای کامپیوتر / توسعه دهنده نرم افزار دارد و در حال حاضر به طور تمام وقت برای یک شرکت بزرگ فناوری اطلاعات اروپایی مشغول به کار است. هنگامی که وبلاگ نویسی نمی کند، اوقات فراغت خود را صرف مجموعه وسیعی از علایق، سرگرمی ها و فعالیت ها می کند، که ممکن است تا حدی در موضوعات مختلف پوشش داده شده در این وب سایت منعکس شود.