2009-07-17 3 views
8

в C#, у меня есть двойная переменная цена со значением 10215.24. Я хочу показать цену запятой после некоторых цифр. Мой ожидается выход 10,215.24C#: Форматирование Строка значения цены

+2

Ответы, которые вы предложили. ToString («N») хороши. Я просто хочу отметить, что вывод будет зависеть от текущей CultureInfo; Это хорошая вещь. В моей системе (шведский язык) она печатает «10 215,24», что имеет смысл для меня, так как «10 215,24» имеет смысл для вас. Просто имейте в виду, что у вас могут возникнуть проблемы, если вы попытаетесь разобрать эту строку * на DateTime *. –

+0

@Fredrik: Зачем ему разбирать его до * DateTime *? –

+0

Его мозг, вероятно, переключился на среднее предложение: p – Svish

ответ

26
myPrice.ToString("N2"); 

в зависимости от того, что вы хотите, вы можете также отобразить символ валюты:

myPrice.ToString("C2"); 

(число после C или N указывает, сколько знаков после запятой следует использовать). (C форматирует номер в виде строки валюты, которая включает символ валюты)

Чтобы быть полностью политически корректным, вы также можете указать CultureInfo, который следует использовать.

+1

Я думаю, что «N2» - это то, что им нужно. –

+0

Разве это не 2 вида дефолта? Так что вам просто нужно 'myPrice.ToString (" N ")'?Не важно, просто любопытно: p – Svish

+0

C2 неверен, потому что отображает валюту –

15

Я думаю, что это нужно сделать, это:

String.Format("{0:C}", doubleVar); 

Если вы не хотите, символ валюты, то просто это сделать:

String.Format("{0:N2}", doubleVar); 
+0

Я не думаю, что они хотели символ валюты. –

+1

этот ответ пятно сверху. Однако также можно посмотреть http://msdn.microsoft.com/en-us/library/fht0f5be.aspx для различных типов форматирования. – James

4

Посмотрите в format strings, в частности "Кукуруза".

double price = 1234.25; 
string FormattedPrice = price.ToString("N"); // 1,234.25 
6

В качестве побочного примечания я бы порекомендовал посмотреть на десятичный тип валюты. Это позволяет избежать ошибок округления, которые допускают поплавки, но в отличие от Integer, они могут иметь цифры после десятичной точки.

+0

Действительно. Десятичные числа должны использоваться для вещей, где важна точность. –

+1

В некоторых финансовых приложениях категорически запрещено использовать поплавки, поскольку все округление должно выполняться в установленном порядке. Альтернативой, где тип класса Decimal или BigNumbers недоступен, является использование целых чисел для хранения долей единицы валюты. Так, например, мы могли рассчитывать пенни или его фракции. –

+0

Не правда ли, что ошибки с плавающей запятой изолированы от чипов Intel и совместимых устройств? –

1

Это может помочь

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″ 
0

Тот, который вы хотите, "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 для различных других типов от

Смежные вопросы