C# 十进制分隔符?

C# 十进制分隔符?,c#,separator,decimal,C#,Separator,Decimal,我有一个方法可以返回如下数字: public decimal GetNumber() { return 250.00m; } 现在,当这个值被打印到控制台时,例如,它有一个逗号(250,00),而不是一个点(250.00)。我总是想在这里指出一点,我做错了什么?特定于区域设置的格式 (绿色等于一个逗号,因此如果您使用这些位置的区域性信息对十进制调用ToString(),您将看到一个逗号)。decimal本身没有格式-它既没有逗号也没有点 当你把它转换成一个字符串,你就会得到它。通过指定

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

public decimal GetNumber()
{
    return 250.00m;
}

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

特定于区域设置的格式


(绿色等于一个逗号,因此如果您使用这些位置的区域性信息对十进制调用
ToString()
,您将看到一个逗号)。

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所解释的,您应该指定用于格式化
字符串的区域性:

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

最好始终使用指定区域性的
ToString
重载。否则,
.NET
将使用当前线程
区域性
,该线程将根据
PC
的区域设置向输出写入不同的
字符串。

我已使用visual studio 2008(控制台应用程序)对其进行了检查,但未显示“,”而不是“,”,请提供更多详细信息。我认为这是文化信息的问题。请提供更多的代码详细信息

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

}

如果您不知道:
在许多欧洲国家用作小数分隔符,如德国、法国和意大利。也许您已经将您的区域性设置为其中一个位置?我已经在控制台应用程序中测试了此功能,对我来说运行正常。显示点(250.00)…另一方面,在PC上使用当前区域设置(假设我们不是在讨论web应用程序)也是首选行为。这毕竟是用户习惯看到的。是的,我同意你的看法。当字符串将在UI中使用时,这是一种有效的行为。但是,当字符串用于执行某种序列化时,这可能是一个真正的问题。在这种情况下,反序列化可能会失败,具体取决于正在执行的PC区域设置。。。在产品在不同地区的平台上发布之前,您不会看到这一点。我宁愿花几秒钟的时间去思考(并做出合理的决定),也不愿事后后悔。System.Globalization.CultureInfo-germanCultureInfo=new System.Globalization.CultureInfo(“de de”);十进制d=0.3m;字符串s1=d.ToString(germanCultureInfo);->s1是0.3而不是0,3。为什么?@Offler:我无法重现——确切的代码给了我“0,3”。发生在一台客户机器上。正在搜索互联网以找出原因。。。解决方案现在可以在客户的pc-Windows设置中找到,我想Convert.ToString()比d.ToString()更安全@JonSkeet@ManirajSS字体你为什么“猜”到?你认为怎样才能“更安全”?