C#小数分隔符?

时间:2010-10-06 07:06:16

标签: c# separator decimal

我有一个返回这样的数字的方法:

public decimal GetNumber()
{
    return 250.00m;
}

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

4 个答案:

答案 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;
    }

}