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 回答