Why does:
decimal.Parse("1,2,3,45", CultureInfo.InvariantCulture)
return a decimal of 12345, yet:
int.Parse("1,2,3,45", CultureInfo.InvariantCulture)
throws an exception? I would expect the commas to be treated the same for the same culture. If decimal.Parse
returns 12345, why doesn't int.Parse
also return 12345?
The default NumberStyles
for int is Integer
:
Integer Indicates that the AllowLeadingWhite, AllowTrailingWhite, and AllowLeadingSign styles are used. This is a composite number style.
Compare to Number
(used for decimal
):
Number Indicates that the AllowLeadingWhite, AllowTrailingWhite, AllowLeadingSign, AllowTrailingSign, AllowDecimalPoint, and AllowThousands styles are used. This is a composite number style.
If you want more, use the overload that accepts NumberStyles
, and supply (for example) NumberStyles.Number
or NumberStyles.Any
:
int i = int.Parse("1,2,3,45", NumberStyles.Number, CultureInfo.InvariantCulture);