Ответ 1
int number = 1234567890;
Convert.ToDecimal(number).ToString("#,##0.00");
Вы получите результат 1,234,567,890.00
.
Мне нужно отобразить число с запятой и десятичной точкой.
Например:
Случай 1: Десятичное число - 432324 (у него нет запятых или десятичных точек)
Необходимо отобразить его как 432,324.00
но не 432 324
Случай 2: Десятичное число - 2222222.22 (у этого нет запятых) Необходимо отобразить его как 2 222 222,22
Я попробовал ToString("#,##0.##")
. Но это не форматирование.
int number = 1234567890;
Convert.ToDecimal(number).ToString("#,##0.00");
Вы получите результат 1,234,567,890.00
.
Возможно, вам просто нужна строка стандартного формата "N"
, как в
number.ToString("N")
Он будет использовать тысячи разделителей и фиксированное число дробных десятичных знаков. Символ для разделителей тысяч и символ десятичной точки зависят от поставщика формата (обычно CultureInfo
), который вы используете, равно как и числа десятичных знаков (что обычно будет на 2, как вам нужно).
Если поставщик формата указывает другое число десятичных знаков, и если вы не хотите менять поставщика формата, вы можете указать число десятичных знаков после N
, как в .ToString("N2")
.
Изменить: размеры групп между запятыми определяются
CultureInfo.CurrentCulture.NumberFormat.NumberGroupSizes
учитывая, что вы не указываете поставщика специального формата.
Попробуйте
ToString("#,##0.00")
Из MSDN
* Спецификатор специального формата "0" служит символом нулевого заполнителя. Если форматируемое значение имеет цифру в позиции, где в строке формата появляется нуль, эта цифра копируется в результирующую строку; в противном случае в строке результата появляется нуль. Положение самого левого нуля перед десятичной точкой и самый правый нуль после десятичной точки определяет диапазон цифр, которые всегда присутствуют в результирующей строке.
Спецификатор "00" вызывает округление значения до ближайшей цифры, предшествующей десятичной, где всегда используется округление от нуля. Например, форматирование 34.5 с "00" приведет к значению 35. *
CultureInfo us = new CultureInfo("en-US");
TotalAmount.ToString("N", us)
Ваш вопрос не очень ясен, но это должно достичь того, что вы пытаетесь сделать:
decimal numericValue = 3494309432324.00m;
string formatted = numericValue.ToString("#,##0.00");
Тогда formatted
будет содержать: 3,494,309,432,324.00
У меня была та же проблема. Я хотел форматировать числа, такие как "Общий" формат в электронных таблицах, то есть показывать десятичные знаки, если они значительны, но отрубить их, если нет. Другими словами:
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
Для просмотра Razor:
[email protected]("{0:#,0.00}",item.TotalAmount)
Все, что нужно, это "#, 0.00", С# делает остальные.
Num.ToString( "#, 0.00" ")
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;
}