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
写入输出…
特定于语言环境的格式?
http://en.wikipedia.org/wiki/File:DecimalSeparator.svg(Green等于逗号,所以如果你使用任何这些位置的文化信息在你的小数上调用ToString()
,你会看到一个逗号) 。
我已经使用visual studio 2008(控制台应用程序)检查了它并且没有显示“,”而不是“。” ,请提供更多详情。 我认为它的文化信息问题。 请提供更多代码详情
class Program { static void Main(string[] args) { Console.Write(GetNumber()); } public static decimal GetNumber() { return 250.00m; } }