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

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

}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top