2009-07-17 103 views
8

在C#中,我有一个值为10215.24的双变量价格。我想用逗号在一些数字后显示价格。我的预期输出为10,215.24C#:格式价格值字符串

+2

你得到的答案建议.ToString(“N”)是好的。我只想指出,输出将取决于当前的CultureInfo;这是一件好事。在我的系统(瑞典语区域)中,它打印出对我来说很有意义的“10 215,24”,因为“10,215.24”对您有意义。请记住,如果您尝试将此字符串*解析回DateTime *,可能会遇到麻烦。 – 2009-07-17 12:43:37

+0

@Fredrik:他为什么要把它解析回* DateTime *? – 2009-07-17 13:24:03

+0

他的大脑可能会在中期语句中切换齿轮:p – Svish 2010-01-06 12:47:16

回答

26
myPrice.ToString("N2"); 

取决于你想要什么,你也不妨来显示货币符号:

myPrice.ToString("C2"); 

(该C后面的数字或N表示有多少小数应该使用)。 (C将数字格式化为货币字符串,其中包括货币符号)

为了完全在政治上正确,您还可以指定应该使用的CultureInfo。

15

我想这应该这样做:

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

如果你不希望货币符号,那么就这样做:

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

查找到format strings,特别是“玉米”。

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

作为一个便笺,我会建议寻找货币的十进制类型。它避免了陷入浮动的舍入错误,但与Integer不同,它可以在小数点后面有数字。

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进一步阅读的各种其他类型格式化