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 (على سبيل المثال في مهمة دفعية)، فتذكر التحقق من أذونات الوصول اللازمة للكود أولاً. في هذه الحالة، ستحتاج إلى إذن InteropPermission من نوع ClrInterop لاستدعاء كود .NET، لذا سيبدو مثال الكود الكامل كالتالي:

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

انتبه إلى أن دالة System::Convert البسيطة هذه تستخدم إعدادات اللغة الحالية للنظام فيما يتعلق بفاصلة الأرقام العشرية. قد لا يمثل هذا مشكلة بالنسبة لك، ولكن بالنسبة لي، الذي أعيش في منطقة تُستخدم فيها الفاصلة بدلاً من النقطة كفاصلة عشرية، فقد يتطلب الأمر معالجة إضافية إذا كانت السلسلة النصية، على سبيل المثال، بحاجة إلى استخدامها في ملف يجب أن يكون قابلاً للقراءة بواسطة أنظمة أخرى.

قراءات إضافية

إذا أعجبك هذا المنشور، فقد تعجبك أيضًا هذه الاقتراحات:


شارك على بلوسكايشارك على الفيسبوكشارك على لينكدإنشارك على تمبلرشارك على إكسشارك على لينكدإنثبت على بينتريست

ميكيل كريستنسن

عن المؤلف

ميكيل كريستنسن
ميكيل هو مؤسس ومالك موقع miklix.com. يتمتع بخبرة تزيد عن 20 عامًا كمبرمج كمبيوتر/مطور برامج محترف ويعمل حاليًا بدوام كامل في إحدى شركات تكنولوجيا المعلومات الأوروبية الكبرى. عندما لا يقوم بالتدوين، يقضي وقت فراغه في مجموعة واسعة من الاهتمامات والهوايات والأنشطة، والتي قد تنعكس إلى حد ما في تنوع الموضوعات التي يغطيها هذا الموقع.