为什么:
decimal.Parse("1,2,3,45", CultureInfo.InvariantCulture)
返回一个十进制的12345,但是:
int.Parse("1,2,3,45", CultureInfo.InvariantCulture)
会抛出异常吗?我希望同一种文化中逗号被处理的方式相同。如果 decimal.Parse
返回 12345,为什么 int.Parse
不也返回 12345 呢?
为什么:
decimal.Parse("1,2,3,45", CultureInfo.InvariantCulture)
返回一个十进制的12345,但是:
int.Parse("1,2,3,45", CultureInfo.InvariantCulture)
会抛出异常吗?我希望同一种文化中逗号被处理的方式相同。如果 decimal.Parse
返回 12345,为什么 int.Parse
不也返回 12345 呢?
int
的默认NumberStyles
为 Integer
:
Integer 指定使用AllowLeadingWhite、AllowTrailingWhite和AllowLeadingSign样式。这是一个组合数字样式。
相比之下,decimal
使用的样式为 Number
:
Number 指定使用AllowLeadingWhite、AllowTrailingWhite、AllowLeadingSign、AllowTrailingSign、AllowDecimalPoint 和 AllowThousands 样式。这是一个组合数字样式。
如果需要更多选项,请使用接受 NumberStyles
参数的重载方法,并提供(例如)NumberStyles.Number
或 NumberStyles.Any
:
int i = int.Parse("1,2,3,45", NumberStyles.Number, CultureInfo.InvariantCulture);