在.NET中,任何人都可以告诉我为什么会这样:
Decimal.Parse("1,234.56", CultureInfo.GetCultureInfo("en-US"));
但这会引发System.FormatException?
Decimal.Parse("1.234,56", CultureInfo.GetCultureInfo("fr-FR"));
是否有建议的方法来解析欧洲数字,这些数字可能包含一个句点作为千位分隔符而一个逗号作为小数点?
谢谢!
答案 0 :(得分:7)
法国CultureInfo
NumberFormatInfo
使用空格作为NumberGroupSeparator
- 所以这有用,例如:
Decimal.Parse("1 234,56", CultureInfo.GetCultureInfo("fr-FR"));
如果您想将.
用作千位分隔符,那么您需要一种文化,即NumberGroupSeparator
。例如,您可以使用西班牙语:
using System;
using System.Globalization;
class Test
{
static void Main()
{
var culture = (CultureInfo) CultureInfo.GetCultureInfo("es-ES");
var d = Decimal.Parse("1.234,56", culture);
Console.WriteLine(d);
}
}
或修改另一种文化:
using System;
using System.Globalization;
class Test
{
static void Main()
{
// Call clone to make sure it's mutable
var culture = (CultureInfo) CultureInfo.GetCultureInfo("fr-FR").Clone();
culture.NumberFormat.NumberGroupSeparator = ".";
var d = Decimal.Parse("1.234,56", culture);
Console.WriteLine(d);
}
}
答案 1 :(得分:1)