为什么逗号在int.Parse()和decimal.Parse()中使用InvariantCulture的行为不同?
本文关键字:Parse InvariantCulture decimal int 为什么 | 更新日期: 2023-09-27 18:16:10
为什么:
decimal.Parse("1,2,3,45", CultureInfo.InvariantCulture)
返回一个小数12345,然而:
int.Parse("1,2,3,45", CultureInfo.InvariantCulture)
抛出异常?我希望在相同的文化中,逗号被同样对待。如果decimal.Parse
返回12345,为什么int.Parse
不返回12345?
参见NumberStyles
int的默认NumberStyles
为Integer
:
Integer表示使用AllowLeadingWhite、AllowTrailingWhite和AllowLeadingSign三种样式。这是一个合数样式。
比较Number
(用于decimal
):
Number表示使用AllowLeadingWhite、AllowTrailingWhite、AllowLeadingSign、AllowTrailingSign、AllowDecimalPoint和allowthousand四种样式。这是一个合数样式。
如果你想要更多,使用接受NumberStyles
的过载,并提供(例如)NumberStyles.Number
或NumberStyles.Any
:
int i = int.Parse("1,2,3,45", NumberStyles.Number, CultureInfo.InvariantCulture);