C# 千分位值到整数

C# 千分位值到整数,c#,C#,我想将一千个分隔的值转换为整数,但得到一个异常 double d = Convert.ToDouble("100,100,100"); 工作正常,并获得d=100100 int n = Convert.ToInt32("100,100,100"); 正在获取一个格式异常 输入字符串的格式不正确 为什么?因为您应该指定一个包含纯整数的字符串(前面可能有+/-符号),没有千分位符。在将字符串传递到ToInt32例程之前,必须替换分隔符。尝试以下操作: int i = Int32.Parse("

我想将一千个分隔的值转换为整数,但得到一个异常

double d = Convert.ToDouble("100,100,100"); 
工作正常,并获得
d=100100

int n = Convert.ToInt32("100,100,100");
正在获取一个格式异常

输入字符串的格式不正确


为什么?

因为您应该指定一个包含纯整数的字符串(前面可能有+/-符号),没有千分位符。在将字符串传递到ToInt32例程之前,必须替换分隔符。

尝试以下操作:

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 
}

你不能有分隔符,只有数字0到9和可选符号

在您的示例中,实际调用的是

Int32.parse(string)
方法只允许三种类型的输入:空白、符号和数字。在以下配置中[ws][sign]位[ws](括号内为可选)


由于您的包含逗号,因此引发了异常

我想OP已经收集到了这一点,但正在询问为什么会这样。编辑时添加了解释。我不想这么说,但我怀疑“为什么?”是“因为”,我怀疑整数没有逗号或句点是任意决定的。Int32.Parse也可以有一个格式参数:Int32.Parse(“100100”),NumberStyles.allowthesands,CultureInfo.InvariantCulture);Int32.TryParse的默认NumberStyles为NumberStyles.Integer,因此要添加可选的千位分隔符,NumberStyles应为(NumberStyles.Integer | NumberStyles.AllowThusands)NumberStyles.AllowThusands,这样可以避免我拔头发。非常感谢。