アプリケーション (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);