C#小数分隔符?

我有一个返回如下数字的方法:

public decimal GetNumber() { return 250.00m; } 

现在,当此值打印到控制台时,它有一个逗号(250,00)而不是一个点(250.00)。 我总是想在这里说一点,我做错了什么?

decimal本身没有格式 – 它既没有逗号也没有点。

这是当你将它转换为一个字符串,你会得到它。 您可以通过指定不变文化来确保获得一个点:

 using System; using System.Globalization; using System.Threading; class Test { static void Main() { Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR"); decimal d = 5.50m; string withComma = d.ToString(); string withDot = d.ToString(CultureInfo.InvariantCulture); Console.WriteLine(withComma); Console.WriteLine(withDot); } } 

正如Jon Skeet所解释的,您应该指定用于格式化string的文化:

 var str = GetNumber().ToString(System.Globalization.CultureInfo.InvariantCulture); 

始终使用指定文化的ToString重载是一种很好的做法。 否则, .NET使用当前线程Culture ,它会根据PC的语言环境将不同的strings写入输出…

我已经使用visual studio 2008(控制台应用程序)检查了它并且没有显示“,”而不是“。” ,请提供更多详情。 我认为它的文化信息问题。 请提供更多代码详情

 class Program { static void Main(string[] args) { Console.Write(GetNumber()); } public static decimal GetNumber() { return 250.00m; } }