我想将千位分隔符的数值转换为整数,但是遇到了一个异常。
double d = Convert.ToDouble("100,100,100");
正在正常工作并获得d=100100100
int n = Convert.ToInt32("100,100,100");
得到了一个格式异常。
输入字符串的格式不正确。
为什么会出现这种情况?
我想将千位分隔符的数值转换为整数,但是遇到了一个异常。
double d = Convert.ToDouble("100,100,100");
正在正常工作并获得d=100100100
int n = Convert.ToInt32("100,100,100");
得到了一个格式异常。
输入字符串的格式不正确。
为什么会出现这种情况?
试试这个:
int i = Int32.Parse("100,100,100", NumberStyles.AllowThousands);
请注意,Parse
方法在无效的字符串上会引发异常,因此您可能还想查看TryParse
方法:
string s = ...;
int i;
if (Int32.TryParse(s, NumberStyles.AllowThousands, CultureInfo.InvariantCulture, out i))
{
// if you are here, you were able to parse the string
}
在你的例子中,Convert.ToInt32 实际调用的是 Int32.Parse。
Int32.parse(string)
方法只允许三种类型的输入:空格、符号和数字。以下是一个配置样例: [ws][sign]digits[ws](方括号内为可选项)。
由于你的输入包含了逗号,导致程序抛出异常。
因为你应该指定一个包含纯整数数字(可能带有+/-符号)的字符串,没有千位分隔符。在将字符串传递给ToInt32例程之前,必须替换分隔符。