سؤال

يعرض تطبيقي حاليًا أرقامًا سالبة كـ -1.لقد قام المستخدمون بتغيير المتطلبات (فقط للتغيير!) وسيتعين علينا الآن عرض الأرقام على أنها (1).هل يمكنني تمكين ذلك للتطبيق بأكمله، مثل تغيير web.config أو حتى CultureInfo الخاص بالتطبيق؟هل هناك أي أثر جانبي للقيام بذلك نظرًا لأن لدينا الكثير من الصفحات التي تحتوي على أدوات التحقق من الأرقام؟

شكرًا !

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

المحلول

وبالنسبة للعملة فمن السهل حقا:

String.Format("{0:C}", value)

وهذا سوف تستخدم المعلومات ثقافة للنظام.

لأرقام العادية يتم ربط البيانات، واستخدام كافة Glorie في عينة .

MSDN المادة

نصائح أخرى

وكنت استخدام التنسيق سلسلة. إجراء تغيير لتكوين التطبيق لتلبية متطلبات UI ثقيلة الوطأة. كتب SteveX على حول تنسيق سلسلة. كما انها متوافقة مع الترميز (ASPX) فقط بدلا من المعنيين في التعليمات البرمجية.

ومن منصبه:

String.Format(”{0:$#,##0.00;($#,##0.00);Zero}”, value);

    This will output “$1,240.00″ if passed 1243.50. It will output the 
    same format but in parentheses if the number is negative, and will
    output the string “Zero” if the number is zero.

والتي ليست بالضبط ما تريد، لكنها قريبة.

وتحقق هذا .. http://msdn.microsoft.com/en-us/library/91fwbcsb.aspx

وتحويل تمثيل سلسلة رقم في النمط المحدد لما يعادلها عشري.

هل يمكن الكتابة دائما طريقة خاصة بك ToString مخصصة () كطريقة تمديد، ولكن مثل التي ذكرتها، وذلك باستخدام CultureInfo هو على الارجح أفضل. نلقي نظرة هنا:

http://msdn.microsoft.com /en-us/library/system.globalization.numberformatinfo.numbernegativepattern.aspx

ولقد حصلت على الصفحة التالية مرجعية للقيام تنسيق سلسلة: HTTP: //idunno.org/archive/2004/14/01/122.aspx

وعن منتصف الطريق إلى أسفل، فإنه يعطي الجواب:

String.Format("{0:£#,##0.00;(£#,##0.00);Nothing}", value);

لإجابة السؤال الآخر الخاص بك، وأود أن لا تعديل app.config لجعلها عالمية، للأسباب المبينة في إجابات أخرى.

String.Format(”{0:f;(f);0”, -1);

هذا يعمل.

DataFormatString="{0:c0}"
  • المبالغ السالبة في الأقواس
  • ألف فاصل - فاصلة
  • رمز $ في الأمام

هل عرض البيانات الخاصة بك في Gridview / Datagrids؟ إذا كان الأمر كذلك التنسيق يمكن تطبيقها في عمود ملزمة، شيء من هذا القبيل:

<asp:BoundField DataFormatString="{##;(##)}"/>

وهذا يعمل فقط مع الأعداد الصحيحة ولكن ...

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