无法将字符串(包含数字)转换为int?

时间:2012-05-21 13:29:06

标签: c# string type-conversion

我有一个非常愚蠢的问题..我有一个包含“800.0000”(没有引号)的字符串,我正在尝试将其转换为数字800.我正在使用此命令,但是不工作:

int inputNumber = Int32.Parse(inputString);

我收到FormatException,并显示消息“输入字符串格式不正确。”

6 个答案:

答案 0 :(得分:11)

试试这个:

int inputNumber = Int32.Parse(inputString, NumberStyles.AllowDecimalPoint);

答案 1 :(得分:3)

  

800.000

的类型为Double,而不是Integer

所以,

double inputNumber = Double.Parse(inputString);

会为你效劳。

答案 2 :(得分:1)

发生异常是因为您的string不是int32。您必须先转换为double

double value = Convert.ToDouble(youString);

答案 3 :(得分:1)

试试这个:

double myDouble = Convert.ToDouble(string);

与其他类型的工作方式类似,

int myInt = Convert.ToInteger(string);

答案 4 :(得分:1)

由于您传递的是带小数的数字,因此您需要使用相应的目标类型 - floatdouble

这样就可以了

var value = Double.Parse(s);

您可以删除这样的小数:

var integer = (int)value;

但即使使用Double.Parse,您也需要小心,因为它会根据当前文化(System.Globalization.CultureInfo.CurrentCulture)预期不同的输入。

所以,而

Double.Parse("800.00", System.Globalization.CultureInfo.GetCultureInfo("en-US"))

按预期工作

Double.Parse("800.00", System.Globalization.CultureInfo.GetCultureInfo("de-DE"))

将产生值“80000”

EDIT1 - 补充道:

所以你可能想要使用

Double.Parse("800.00", System.Globalization.CultureInfo.InvariantCulture)

防止任何可能导致各种麻烦的误解。

答案 5 :(得分:0)

Int32 valueInInt =(int)double.Parse(inputString);