C#:格式化价格值字符串

C#: Formatting Price value string

在C中,我有一个值为10215.24的双变量价格。我想在一些数字后用逗号表示价格。我的预期产量是10215.24


1
myPrice.ToString("N2");

根据需要,您还可能希望显示货币符号:

1
myPrice.ToString("C2");

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

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


我认为应该这样做:

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

如果不需要货币符号,请执行以下操作:

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


作为补充说明,我建议您查看货币的十进制类型。它避免了困扰浮动的舍入错误,但与整数不同,它可以在小数点后有数字。


查看格式字符串,特别是"c"或"n"。

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

这可能有帮助

1
2
3
4
5
6
7
    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"。

下面是一个例子:

1
2
double dPrice = 29.999988887777666655554444333322221111;
string sPrice ="£" + dPrice.ToString("N2");

你可能会喜欢这样:

1
2
3
4
5
6
7
8
9
10
11
string sPrice ="";

if(dPrice < 1)
{
    sPrice = ((int)(dPrice * 100)) +"p";

} else
{
    sPrice ="£" + dPrice.ToString("N2");

}

这很好地浓缩成:

1
string sPrice = dPrice < 1 ? ((int)(dPrice * 100)).ToString("N0") +"p" :"£" + dPrice.ToString("N2");

有关各种其他格式的详细信息,请访问msdn.microsoft.com/en-us/library/fht0f5be.aspx。