为什么逗号在使用InvariantCulture的int.Parse()和decimal.Parse()中表现不同?

时间:2011-11-29 13:24:50

标签: c# .net parsing globalization cultureinfo

为什么:

decimal.Parse("1,2,3,45", CultureInfo.InvariantCulture)

返回小数12345,但是:

int.Parse("1,2,3,45", CultureInfo.InvariantCulture)

抛出异常?我希望对于相同的文化,逗号的处理方式是相同的。如果decimal.Parse返回12345,为什么int.Parse也不返回12345?

1 个答案:

答案 0 :(得分:16)

See NumberStyles

int的默认NumberStylesInteger

  

Integer表示使用AllowLeadingWhite,AllowTrailingWhite和AllowLeadingSign样式。这是一种复合数字样式。

Number(用于decimal)比较:

  

Number表示使用AllowLeadingWhite,AllowTrailingWhite,AllowLeadingSign,AllowTrailingSign,AllowDecimalPoint和AllowThousands样式。这是一种复合数字样式。

如果您需要更多内容,请使用接受NumberStyles的重载,并提供(例如)NumberStyles.NumberNumberStyles.Any

int i = int.Parse("1,2,3,45", NumberStyles.Number, CultureInfo.InvariantCulture);