题
我有一种返回这样的数字的方法:
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;
}
}
不隶属于 StackOverflow