我正在为应用程序(ASP.NET MVC 4)中的价格值尝试不同的格式,首先我在 LINQPad 中测试了下面的代码,它运行良好(没有无意义的尾随零)。但是当我将这些代码 string.Format("G", value) 专门放在我的代码中时,它不起作用,再次出现尾随零!!!为什么?
LINQPad 片段:
decimal d = 0.3M, d2 = 0.45M, d3 = 13.2M, d4 = 1049M, d5 = 12492.4M, d6 = 2000M;
var culture = CultureInfo.CreateSpecificCulture("vi-VN");
Console.WriteLine(string.Format(culture, "{0:G}", d));
Console.WriteLine(string.Format(culture, "{0:G}", d2));
Console.WriteLine(string.Format(culture, "{0:G}", d3));
Console.WriteLine(string.Format(culture, "{0:G}", d4));
Console.WriteLine(string.Format(culture, "{0:G}", d5));
Console.WriteLine(string.Format(culture, "{0:G}", d6));
LINQPad 输出:
// Output:
// 0,3
// 0,45
// 13,2
// 1049
// 12492,4
// 2000
我的应用程序输出:
// Output:
// 0,30
// 0,45
// 13,20
// 1049,00
// 12492,40
// 2000,00
更新 1:我在 .NET 4 控制台应用程序和 ASP.NET MVC 4(.NET 4 和 .NET 4.5)中再次尝试了以下代码,并且都运行良好(没有零)。但它在我的应用程序中仍然不起作用,即使我把它们放在一个空的动作中。唯一不同的是我的应用程序(ASP.NET MVC 4)是在 VS2010 + .NET 4 中创建的,后来升级到 VS2012 + .NET 4.5。是问题吗?
decimal d = 0.3M;
string s = string.Format(CultureInfo.CreateSpecificCulture("vi-VN"), "{0:G}", d);