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

StackOverflow https://stackoverflow.com/questions/1587778

Вопрос

У меня есть десятичное число, скажем, 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)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top