为什么它在LINQPad中有效但在我的代码中却没有?

时间:2012-10-03 02:14:23

标签: c# asp.net-mvc-4 linqpad

我正在为应用程序中的价格值尝试不同的格式(ASP.NET MVC 4),首先我在LINQPad中测试了下面的代码并且它运行良好(没有无意义的尾随零)。但是当我把这些代码,string.Format(“G”,值)专门放在我的代码中时,它没有用,尾随的零再次出现!为什么呢?

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);

2 个答案:

答案 0 :(得分: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));

参考:Remove trailing zeros

答案 1 :(得分:0)

这似乎只是我的应用程序问题,而不是ToString(“G”)。谢谢你的阅读。