в C#, у меня есть двойная переменная цена со значением 10215.24. Я хочу показать цену запятой после некоторых цифр. Мой ожидается выход 10,215.24C#: Форматирование Строка значения цены
ответ
myPrice.ToString("N2");
в зависимости от того, что вы хотите, вы можете также отобразить символ валюты:
myPrice.ToString("C2");
(число после C или N указывает, сколько знаков после запятой следует использовать). (C форматирует номер в виде строки валюты, которая включает символ валюты)
Чтобы быть полностью политически корректным, вы также можете указать CultureInfo, который следует использовать.
Я думаю, что «N2» - это то, что им нужно. –
Разве это не 2 вида дефолта? Так что вам просто нужно 'myPrice.ToString (" N ")'?Не важно, просто любопытно: p – Svish
C2 неверен, потому что отображает валюту –
Я думаю, что это нужно сделать, это:
String.Format("{0:C}", doubleVar);
Если вы не хотите, символ валюты, то просто это сделать:
String.Format("{0:N2}", doubleVar);
Я не думаю, что они хотели символ валюты. –
этот ответ пятно сверху. Однако также можно посмотреть http://msdn.microsoft.com/en-us/library/fht0f5be.aspx для различных типов форматирования. – James
Посмотрите в format strings, в частности "Кукуруза".
double price = 1234.25;
string FormattedPrice = price.ToString("N"); // 1,234.25
В качестве побочного примечания я бы порекомендовал посмотреть на десятичный тип валюты. Это позволяет избежать ошибок округления, которые допускают поплавки, но в отличие от Integer, они могут иметь цифры после десятичной точки.
Действительно. Десятичные числа должны использоваться для вещей, где важна точность. –
В некоторых финансовых приложениях категорически запрещено использовать поплавки, поскольку все округление должно выполняться в установленном порядке. Альтернативой, где тип класса Decimal или BigNumbers недоступен, является использование целых чисел для хранения долей единицы валюты. Так, например, мы могли рассчитывать пенни или его фракции. –
Не правда ли, что ошибки с плавающей запятой изолированы от чипов Intel и совместимых устройств? –
Это может помочь
String.Format("{#,##0.00}", 1243.50); // Outputs “1,243.50″
String.Format("{0:$#,##0.00;($#,##0.00);Zero}", 1243.50); // Outputs “$1,243.50″
String.Format("{0:$#,##0.00;($#,##0.00);Zero}", -1243.50); // Outputs “($1,243.50)″
String.Format("{0:$#,##0.00;($#,##0.00);Zero}", 0); // Outputs “Zero″
Тот, который вы хотите, "N2".
Вот пример:
double dPrice = 29.999988887777666655554444333322221111;
string sPrice = "£" + dPrice.ToString("N2");
Вы могли бы даже так:
string sPrice = "";
if(dPrice < 1)
{
sPrice = ((int)(dPrice * 100)) + "p";
} else
{
sPrice = "£" + dPrice.ToString("N2");
}
, который конденсируется хорошо к этому:
string sPrice = dPrice < 1 ? ((int)(dPrice * 100)).ToString("N0") + "p" : "£" + dPrice.ToString("N2");
Дальнейшее чтение на msdn.microsoft.com/en-us/library/fht0f5be.aspx для различных других типов от
Ответы, которые вы предложили. ToString («N») хороши. Я просто хочу отметить, что вывод будет зависеть от текущей CultureInfo; Это хорошая вещь. В моей системе (шведский язык) она печатает «10 215,24», что имеет смысл для меня, так как «10 215,24» имеет смысл для вас. Просто имейте в виду, что у вас могут возникнуть проблемы, если вы попытаетесь разобрать эту строку * на DateTime *. –
@Fredrik: Зачем ему разбирать его до * DateTime *? –
Его мозг, вероятно, переключился на среднее предложение: p – Svish