Форматируйте число с запятыми и десятичными знаками в С# (asp.net MVC3) - программирование
Подтвердить что ты не робот

Форматируйте число с запятыми и десятичными знаками в С# (asp.net MVC3)

Мне нужно отобразить число с запятой и десятичной точкой.

Например: Случай 1: Десятичное число - 432324 (у него нет запятых или десятичных точек) Необходимо отобразить его как 432,324.00
но не 432 324

Случай 2: Десятичное число - 2222222.22 (у этого нет запятых) Необходимо отобразить его как 2 222 222,22

Я попробовал ToString("#,##0.##"). Но это не форматирование.

4b9b3361

Ответ 1

int number = 1234567890;
Convert.ToDecimal(number).ToString("#,##0.00");

Вы получите результат 1,234,567,890.00.

Ответ 2

Возможно, вам просто нужна строка стандартного формата "N", как в

number.ToString("N")

Он будет использовать тысячи разделителей и фиксированное число дробных десятичных знаков. Символ для разделителей тысяч и символ десятичной точки зависят от поставщика формата (обычно CultureInfo), который вы используете, равно как и числа десятичных знаков (что обычно будет на 2, как вам нужно).

Если поставщик формата указывает другое число десятичных знаков, и если вы не хотите менять поставщика формата, вы можете указать число десятичных знаков после N, как в .ToString("N2").

Изменить: размеры групп между запятыми определяются

CultureInfo.CurrentCulture.NumberFormat.NumberGroupSizes

учитывая, что вы не указываете поставщика специального формата.

Ответ 3

Попробуйте

ToString("#,##0.00")

Из MSDN

* Спецификатор специального формата "0" служит символом нулевого заполнителя. Если форматируемое значение имеет цифру в позиции, где в строке формата появляется нуль, эта цифра копируется в результирующую строку; в противном случае в строке результата появляется нуль. Положение самого левого нуля перед десятичной точкой и самый правый нуль после десятичной точки определяет диапазон цифр, которые всегда присутствуют в результирующей строке.

Спецификатор "00" вызывает округление значения до ближайшей цифры, предшествующей десятичной, где всегда используется округление от нуля. Например, форматирование 34.5 с "00" приведет к значению 35. *

Ответ 4

CultureInfo us = new CultureInfo("en-US");
TotalAmount.ToString("N", us)

Ответ 5

Ваш вопрос не очень ясен, но это должно достичь того, что вы пытаетесь сделать:

decimal numericValue = 3494309432324.00m;
string formatted = numericValue.ToString("#,##0.00");

Тогда formatted будет содержать: 3,494,309,432,324.00

Ответ 6

У меня была та же проблема. Я хотел форматировать числа, такие как "Общий" формат в электронных таблицах, то есть показывать десятичные знаки, если они значительны, но отрубить их, если нет. Другими словами:

1234,56 = > 1,234,56

1234 = > 1,234

Он должен поддерживать максимальное количество мест после десятичного числа, но не ставить конечные нули или точки, если это не требуется, и, конечно же, это должно быть дружественным к культуре. Я никогда не понимал, как это сделать, используя String.Format, но комбинация String.Format и Regex.Replace с некоторой помощью культуры от NumberFormatInfo.CurrentInfo выполнил задание (LinqPad С# Program).

string FormatNumber<T>(T number, int maxDecimals = 4) {
    return Regex.Replace(String.Format("{0:n" + maxDecimals + "}", number),
                         @"[" + System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator + "]?0+$", "");
}   

void Main(){
    foreach (var test in new[] { 123, 1234, 1234.56, 123456.789, 1234.56789123 } )
        Console.WriteLine(test + " = " + FormatNumber(test));
}

Выдает:

123 = 123
1234 = 1,234
1234.56 = 1,234.56
123456.789 = 123,456.789
1234.56789123 = 1,234.5679

Ответ 7

Для просмотра Razor:

[email protected]("{0:#,0.00}",item.TotalAmount)

Ответ 8

Все, что нужно, это "#, 0.00", С# делает остальные.

Num.ToString( "#, 0.00" ")

  • "#, 0" форматирует тысячи разделителей
  • "0.00" заставляет две десятичные точки

Ответ 9

string Mynewcurrency = DisplayIndianCurrency("7743450.00");
        private string DisplayIndianCurrency(string EXruppesformate) 
        { 
        string fare = EXruppesformate;
        decimal parsed = decimal.Parse(fare, CultureInfo.InvariantCulture);
        CultureInfo hindi = new CultureInfo("en-IN");
     // string text = string.Format(hindi, "{0:c}", parsed);if you want <b>Rs 77,43,450.00</b>
    string text = string.Format(hindi, "{0:N}", parsed); //if you want <b>77,43,450.00</b>
      return ruppesformate = text;
    }