我有一个返回这样的数字的方法:
public decimal GetNumber()
{
return 250.00m;
}
现在,当此值打印到控制台时,它有一个逗号(250,00)而不是一个点(250.00)。我总是想在这里说一点,我做错了什么?
答案 0 :(得分:49)
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);
}
}
答案 1 :(得分:7)
正如Jon Skeet所解释的那样,您应该指定用于格式化string
的文化:
var str = GetNumber().ToString(System.Globalization.CultureInfo.InvariantCulture);
始终使用指定文化的ToString
重载是一种好习惯。否则,.NET
使用当前线程Culture
,它会根据strings
的区域设置将不同的PC
写入输出...
答案 2 :(得分:1)
特定于语言环境的格式?
http://en.wikipedia.org/wiki/File:DecimalSeparator.svg(绿色等于逗号,因此如果您使用这些位置的文化信息在小数点上调用ToString()
,则会看到一个逗号)。
答案 3 :(得分:0)
我已经使用visual studio 2008(控制台应用程序)检查了它并且没有显示“,”而不是“。” ,请提供更多详情。我认为它的文化信息问题。请提供更多代码详情
class Program
{
static void Main(string[] args)
{
Console.Write(GetNumber());
}
public static decimal GetNumber()
{
return 250.00m;
}
}