簡體   English   中英

C#小數點分隔符?

[英]C# decimal separator?

我有一個方法可以返回這樣的數字:

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 ,它將根據PC的區域設置將不同的strings寫入輸出......

特定於區域設置的格式?

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 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM