我有一个返回这样的数字的方法:
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
,这将strings
根据PC
...的语言环境写入与输出不同的输出。
特定于区域设置的格式?
http://en.wikipedia.org/wiki/File:DecimalSeparator.svg(绿色等于逗号,因此如果您ToString()
使用这些位置的文化信息调用小数点,您将看到一个逗号)。
我用visual studio 2008(控制台应用程序)检查了它,它没有显示“,”而不是“。” ,请提供更多详细信息。我认为它的文化信息问题。请提供更多代码详细信息
class Program
{
static void Main(string[] args)
{
Console.Write(GetNumber());
}
public static decimal GetNumber()
{
return 250.00m;
}
}