سؤال

لدي رقم عشري ، على سبيل المثال 1234.500.

أريد أن أعرضها كـ 1،234.5.

أقوم حاليًا بتحويله إلى مزدوج لإزالة "0".

string.Format("{0:0,0}",1234.500) يزيل المكان العشري ، ويبدو أن خيارات التنسيق الأخرى تستخدم مكانين عشريين بغض النظر.

هل يمكن لأي شخص تقديم نظرة ثاقبة؟

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

المحلول

يجب عليك استخدام تنسيق مخصص مثل #,##0.00

string s = string.Format("{0:#,##0.00}", xx);

سوف ينتج 1,234.50 عندما xx = 1234.5m
ننسى التحول إلى double, ، هذا لن يساعد حقًا.

نصائح أخرى

هل تدرك أن .NET لديه دعم مدمج لتنسيق الأرقام بشكل صحيح وفقًا للإعدادات الإقليمية لكل مستخدم لتطبيقك؟ قد يكون من الأفضل الاستفادة من الإعدادات الإقليمية الخاصة بالمستخدم (يعرف إطار عمل .NET جميع الإعدادات الصحيحة بالفعل).

ومع ذلك ، إذا كنت ترغب في إصلاح التطبيق الخاص بك لتنسيق الأرقام في إعداد إقليمي معين ، فلا يزال بإمكانك أن ترفع لغة معينة من اختيارك وقوة .NET لاستخدام ذلك كأساس لجميع التنسيق (وليس فقط الأرقام):

using System.Globalization;
using System.Threading;
...
CultureInfo us = new CultureInfo("en-US");

وثم

Thread.CurrentThread.CurrentUICulture = us;

أو فقط

Console.WriteLine(d.ToString("c", us));

يجب أن تدرك أن استخدام الفواصل كفاصل فاصل آلاف مناسبة للمملكة المتحدة والولايات المتحدة الأمريكية ، لكن ليس كيف يجب عرض الآلاف في بلدان أخرى

"يتم عرض ألف وخمسة وعشرون على أنه 1025 في الولايات المتحدة و 1.025 في ألمانيا. في السويد ، فاصل الآلاف هو مساحة"

MSDN لديها قسم مخصص مكرس لهذا الموضوع الذي يسمونه "العولمة" (أي هذا مصطلح بحث جيد إذا كنت بحاجة إلى البحث عن مزيد من التفاصيل). تصف تلك الصفحة كيف يعمل استخدام علامة الجنيه كمكتب نائب أرقام لإزالة الأصفار الزائدة (كما اقترح Henk Holterman في تعليق سابق).

أنظر أيضا سلاسل تنسيق رقمية مخصصة.

بديل آخر:

decimal d = 1234.56m;
string s = d.ToString("N");    // 1,234.56

هل جربت هذا؟

   String.Format("{0:0,0.00}", 1234.560);

جرب هذا !

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
        Try
            TextBox1.Text = Format(CInt(TextBox1.Text), "#,#")
            TextBox1.SelectionStart = TextBox1.Text.Length
        Catch ex As Exception

        End Try

End Sub

جرب هذا:

string myNumber = string.Format("{0:#,0.00}", 1234.500);

(لقد رأيت هذا في تقارير RDLC)

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