String.Format一个整数,在丹麦文化中使用千位分隔符和十进制值

时间:2013-12-05 09:48:29

标签: c# asp.net

我有一个字符串totalPRice,其中包含类似1147,5的值 我想要两件事 1)对值进行四舍五入,使,之后总是有两位数 2)在这个字符串中实现千位分隔符,这样最终的输出就像这个1.147,50一样 我尝试过这样的事情

String.Format("{0:0.00}", totalPRice)

通过生成输出1147,50来正确地完成我的第一个要求。 但我在第二个要求中落后了。任何人都可以告诉我如何实现这一目标吗?

注意:在丹麦文化中.代表,,代表.

5 个答案:

答案 0 :(得分:6)

您可以参考Standard Numeric Format Strings并使用

string.Format("{0:N2}", 1234.56)

如果丹麦语不是您的默认文化,您也可以手动指定文化:

var danishCulture = CultureInfo.CreateSpecificCulture("da-DK");
string.Format(danishCulture, "{0:N2}", 1234.56);

请参阅MSDN Reference for CultureInfo

答案 1 :(得分:2)

试试这个:

String.Format("{0:N2}", totalPRice)

另一种可能性是使用ToString(string format)重载。

totalPRice.ToString("N2");

答案 2 :(得分:2)

您应该创建一个特定于文化的CultureInfo对象,并在将数字转换为字符串时使用它。此外,您可以设置default culture for your whole program

然后,您的代码将如下所示:

// create Dennmark-specific culture settings
CultureInfo danishCulture = new CultureInfo("da");

// format the number so that correct Danish decimal and group separators are used
decimal totalPrice = 1234.5m;
Console.WriteLine(totalPrice.ToString("#,###.##", danishCulture));

请注意,格式化字符串中的.,是根据需要指定的。这是因为它们识别十进制和组分隔符,并替换为正确的特定于文化的文本。

答案 3 :(得分:1)

如果这是货币价值(金钱!),那么最好使用当前格式说明符'C'或'c':

string.Format("{0:C}", 1234.56)

通常我不会写小数位数,因为它来自国际配置。 如果您不想使用默认的colture说明符,可以使用不同的colture说明符。

var colture = CultureInfo.CreateSpecificCulture("§§§§§");
string.Format(culture, "{0:C}", 1234.56);

其中§§§§§是标识所需colture的字符串。

答案 4 :(得分:-2)

请尝试使用价格格式。将它放在模板字段下而不是BoundField。

<%#(decimal.Parse(Eval("YourDataField").ToString())).ToString("N2")%>