![](/img/trans.png)
[英]Decimal parse when the thousand separator and decimal separator are the same 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.