我正在嘗試應用程序(ASP.NET MVC 4)中的價格值的不同格式,首先我在LINQPad中的代碼下面進行了測試,並且它運行良好(沒有無意義的尾隨零)。但是,當我把這些代碼,特別是在我的代碼中的string.Format(「G」,值),它不起作用,尾隨零再次出現!爲什麼?爲什麼它在LINQPad中工作,但不在我的代碼中?
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
UPDATE 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);
您在ASP.NET頁面中顯示輸出還是寫入控制檯? –
你也是積極的,你正在使用您的網站上的最新代碼?即您已重新構建項目。添加一些調試行來驗證,如'Debug.WriteLine(culture.NumberFormat.NumberDecimalDigits);' –
@D Stanley:我在ASP.NET MVC 4代碼中詢問這個問題,上面的代碼只是一個簡單的例子,使用相同的格式字符串{0:G} –