سؤال

أحاول تحويل الأرقام في النموذج 123456 إلى 123،456 الذي أجده سهلا كافيا باستخدام طريقة .NET Tostring () بتنسيق مخصص من N0.

ولكن في حالة واحدة من البيانات، أحصل على صيغ غريبة أثناء استخدام هذه الطريقة.

في هذه الحالة، أنظر بيانات DataTable بشكل حيوي عن جدول الإدخال الخاص بي لاختبار التعليمات البرمجية.

DataTable dt = new DataTable();

dt.Columns.Add("Cases", typeof(Int32));

على سبيل المثال بيانات البيانات الخاصة بي تبدو وكأنها قبل تطبيق التنسيق.

-------------------------------------------- |. الحالات | 2495 | 3937 | 3207 | 4173 | 4265 | ----------------------------------------------

أود أن تبدو وكأنها هذه.

------------------------------------------------- | الحالات | 2،495 | 3،937 | 3،207 | 4،173 | 4،265 | -------------------------------------------------

أحاول تهيئة ذلك باستخدام رمز مثل ذلك.

output.Rows[r][c] = Convert.ToInt32(input.Rows[c - 1][r + 1]).ToString("N0");

(ملاحظة: سبب التنسيق الغريب هو أنني آخذ DataTable وانقله إلى DataTable آخر.)

باستخدام التنسيق أعلاه، احصل الآن على البيانات التالية التي تم إرجاعها.

-------------------------------------------------- ------------------------ |. الحالات | 01/0495 |. 01/0937 | 01/03/0207 | 01/04/0173 | 01/04/0265 |. -------------------------------------------------- ------------------------

ثم حاولت ذلك مع نقطة عشرية واحدة باستخدام:

output.Rows[r][c] = Convert.ToInt32(input.Rows[c - 1][r + 1]).ToString("N01");

مما أعطاني النتيجة التالية.

-------------------------------------------------- ---- |. الحالات | 2495.0 | 3937.0 | 3207.0 | 4173.0 | 4265.0 | -------------------------------------------------- ----

لقد حظيتني بذلك الآن لأنها تقبل حقيقة أنه يمكن تنسيق الرقم بهذه الطريقة.

الشيء التالي الذي جربته هو طرق مختلفة لتنسيق سلاسل مثل ذلك.

output.Rows[r][c] = string.Format("{0:N0}", input.Rows[c - 1][r + 1]);
output.Rows[r][c] = Convert.ToInt32(input.Rows[c - 1][r + 1]).ToString("#,##0");

لا شيء من هذه أعط تنسيق الرقم كيف أود أيضا. هل يمكن لأي شخص أن ينصح أين أخطأ؟ هل هو بسيط جدا لقد فاتني هذه النقطة؟

هل كانت مفيدة؟

المحلول

يبدو لي ببساطة أن قمت بتعيين نوع البيانات من الأعمدة في DataTable بشكل غير صحيح. حاول جعلها صريحة int (يبدو DateTime في اللحظة).

أيضا - وظيفة DataTable من أجل معلق بيانات؛ ليس للمضايقة ذلك. يمكنك تخزينها مسبقا stringS، أعتقد (طالما كنت يخبار أن الأعمدة هي سلاسل) - ولكن إذا كنت تخزنها int, ، ثم ننسى الشاشة؛ بمجرد تشغيل Convert.ToInt32 انتهى عملك. كيف تظهر هي وظيفة DataGridView (أو أيا كان)؛ يخبار الذي - التي حول "N0" ...

نصائح أخرى

حاول استخدام ببساطة "N" كما هو الحال في ToString ("n")؛

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top