1

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

2 に答える 2

0

代わりに {0:G29} を使用してください

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:G29}", d));
Console.WriteLine(string.Format(culture, "{0:G29}", d2));
Console.WriteLine(string.Format(culture, "{0:G29}", d3));
Console.WriteLine(string.Format(culture, "{0:G29}", d4));
Console.WriteLine(string.Format(culture, "{0:G29}", d5));
Console.WriteLine(string.Format(culture, "{0:G29}", d6));

参考:末尾のゼロを削除

于 2012-10-03T02:17:17.153 に答える
0

これは私のアプリケーションの問題であり、ToString("G") ではないようです。読んでくれてありがとう。

于 2012-10-11T18:10:06.817 に答える