Ответ 1
Вы должны использовать настраиваемое форматирование, например #,##0.00
string s = string.Format("{0:#,##0.00}", xx);
Будет производить 1,234.50
, когда xx = 1234.5M
забыть о преобразовании в double
, что не поможет.
У меня есть десятичное число, скажем, 1234.500.
Я хочу, чтобы он отображал 1,234.4
Im в настоящее время преобразует его в double, чтобы удалить конечные "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 посвятил раздел, посвященный этой теме, которую они называют "глобализация" (то есть, что хороший поисковый запрос, если вам нужно выследить более детально). На этой странице описывается, как использование знака фунта работает в качестве заполнителя цифр для удаления конечных нулей (как было предложено Хенком Холтерманом в предыдущем комментарии).
См. также Пользовательские строки числового формата.
Другая альтернатива:
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)