Why does NumberStyles.AllowThousands work for int.Parse but not for double.Parse in this example?
为了解析一个表示数字的字符串,用逗号将千位数字与其余数字分隔开,我尝试了
1 2 | int tmp1 = int.Parse("1,234", NumberStyles.AllowThousands); double tmp2 = double.Parse("1,000.01", NumberStyles.AllowThousands); |
第一条语句可以运行,而第二条语句由于通知而失败
An unhandled exception of type 'System.FormatException' occurred in
mscorlib.dllAdditional information: Input string was not in a correct format.
为什么两者都不成功?谢谢。
您应该传递
1 | double.Parse("1,000.01", NumberStyles.AllowThousands | NumberStyles.AllowDecimalPoint) |
当为解析方法提供某种数字样式时,可以指定字符串中可以出现的元素的确切样式。未包含的样式视为不允许。解析双值的默认标志组合(不显式指定样式时)是
考虑一下分析整数的第一个例子——您还没有传递
1 | int.Parse("-1,234", NumberStyles.AllowThousands) |
对于这些数字,应添加
1 | int.Parse("-1,234", NumberStyles.AllowThousands | NumberStyles.AllowLeadingSign) |