Добавить запятую-разделитель тысяч в десятичную дробь (.net)
-
22-09-2019 - |
Вопрос
У меня есть десятичное число, скажем, 1234.500.
Я хочу отобразить его как 1234,5.
В настоящее время я конвертирую его в двойной, чтобы удалить конечные 0.
string.Format("{0:0,0}",1234.500)
удаляет десятичный знак, а другие параметры форматирования, похоже, независимо от этого используют два десятичных знака.
Может ли кто-нибудь предложить понимание?
Решение
Вы должны использовать пользовательское форматирование, подобное #,##0.00
string s = string.Format("{0:#,##0.00}", xx);
Будет производить 1,234.50
Когда xx = 1234,5 м
Забудьте о конвертации в 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)