gpt4 book ai didi

c# - .NET Decimal.Parse 在使用句点作为千位分隔符时抛出 FormatException

转载 作者:太空宇宙 更新时间:2023-11-03 18:04:04 25 4
gpt4 key购买 nike

在 .NET 中,谁能告诉我为什么会这样:

Decimal.Parse("1,234.56", CultureInfo.GetCultureInfo("en-US"));

但这会引发 System.FormatException?
Decimal.Parse("1.234,56", CultureInfo.GetCultureInfo("fr-FR"));

是否有推荐的方法来解析可能包含一个句点作为千位分隔符和一个逗号作为小数点的欧洲数字?

谢谢!

最佳答案

法国人 CultureInfoNumberFormatInfo使用空格作为 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);
}
}

关于c# - .NET Decimal.Parse 在使用句点作为千位分隔符时抛出 FormatException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39507352/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com