Добавить разделитель запятой в десятичный (.net)

У меня есть десятичное число, скажем, 1234.500.

Я хочу, чтобы он отображал 1,234.4

Im в настоящее время преобразует его в double, чтобы удалить конечные "0".

string.Format( "{0: 0,0}", 1234.500) удаляет десятичное место, а другие параметры форматирования, по-видимому, используют два десятичных знака независимо.

Может кто-нибудь предложить понимание?

Ответы

Ответ 1

Вы должны использовать настраиваемое форматирование, например #,##0.00

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

Будет производить 1,234.50, когда xx = 1234.5M
забыть о преобразовании в double, что не поможет.

Ответ 2

Знаете ли вы, что .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 посвятил раздел, посвященный этой теме, которую они называют "глобализация" (то есть, что хороший поисковый запрос, если вам нужно выследить более детально). На этой странице описывается, как использование знака фунта работает в качестве заполнителя цифр для удаления конечных нулей (как было предложено Хенком Холтерманом в предыдущем комментарии).

См. также Пользовательские строки числового формата.

Ответ 3

Другая альтернатива:

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

Ответ 4

Вы пробовали это?

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

Ответ 5

попробуйте это!

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

Ответ 6

Попробуйте следующее:

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

(Я видел это в отчетах RDLC)