要解析表示数字的字符串,用逗号分隔千位数字,我试过
int tmp1 = int.Parse("1,234", NumberStyles.AllowThousands);
double tmp2 = double.Parse("1,000.01", NumberStyles.AllowThousands);
第一个语句可以运行,而第二个语句因通知失败
发生了'System.FormatException'类型的未处理异常 mscorlib.dll中
其他信息:输入字符串的格式不正确。
为什么两者都没有成功?感谢。
答案 0 :(得分:13)
您应该传递AllowDecimalPoint
,Float
或Number
样式(后两种样式只是几种数字样式的组合,包括AllowDecimalPoint
标志):
double.Parse("1,000.01", NumberStyles.AllowThousands | NumberStyles.AllowDecimalPoint)
当您为解析方法提供某种数字样式时,您可以指定字符串中可能出现的 exact 元素样式。不包括的样式被视为不允许。用于解析double值的标志的默认组合(当您未明确指定样式时)是NumberStyles.Float
和NumberStyles.AllowThousands
标志。
考虑解析整数的第一个例子 - 你没有传递AllowLeadingSign
标志。因此,以下代码将引发异常:
int.Parse("-1,234", NumberStyles.AllowThousands)
对于此类数字,应添加AllowLeadingSign
标志:
int.Parse("-1,234", NumberStyles.AllowThousands | NumberStyles.AllowLeadingSign)