تحويل رقم حقيقي إلى سلسلة نصية مع جميع الأرقام العشرية في Dynamics AX 2012
نُشرت: ١٦ فبراير ٢٠٢٥ م في ١٠:٤٠:٢٣ ص 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 البسيطة هذه تستخدم الإعدادات المحلية الحالية للنظام فيما يتعلق بحرف الفاصلة العشرية. قد لا يمثل هذا مشكلة بالنسبة لك، ولكن بالنسبة لي، الذي أعيش في منطقة تستخدم فيها الفاصلة بدلاً من النقطة كفاصل عشري، فقد يتطلب الأمر معالجة إضافية إذا كان من الضروري استخدام السلسلة على سبيل المثال في ملف يجب أن يكون قابلاً للقراءة بواسطة أنظمة أخرى.