无法将字符串转换为整数

时间:2016-04-07 20:56:22

标签: c#

我试图将字符串"127.0"转换为整数。

我试过这个功能:

int getInt(string numStr)
{
 int result;
 int.TryParse(numStr, out result);
 return result;
}

但当我将其称为int x = getInt("127.0");时,int.TryParse()会将result设为0。

当我重写这样的函数时:

int getInt(string numStr)
{
 result=Convert.ToInt32(numStr);
 return result;
}

相同的getInt()调用会抛出此异常:

Input string was not in a correct format.

4 个答案:

答案 0 :(得分:6)

这里的问题是“127.0”不是整数,它是一个浮点数。您需要使用其他浮点类型之一来解析它(例如doublefloatDecimal等。)

您可能需要考虑剥离小数点后的任何值并尝试解析它,或者将其解析为另一种类型并将其转换为整数:

int result = (int)Convert.ToDouble("1.270"); 

您还可以利用Math.Truncate()函数来获取值的整数部分:

int result = (int)Math.Truncate(Convert.ToDouble("127.0"));

答案 1 :(得分:0)

首先,您需要检查int.TryParse()的返回值。如果它返回false,则无法转换该字符串。

如果你这样做了,你会看到它返回false,因为 127.0 没有描述整数值(它描述了一个浮点值)。

请注意,decimal.TryParse()会在此处成功。您需要弄清楚是否需要整数或浮点值,并拒绝不正确的数据。

答案 2 :(得分:0)

int不能包含小数点;这使它成为double,float或decimal。尝试从小数点向右拉数字减去任何东西,如下所示:

int getInt(string numStr)
{
  int result;
  string[] splitup; 
  string number;
  if (numstr.Contains('.'))
  {
    splitup = numstr.Split('.');
    number = splitup[0];
    int.TryParse(number, out result);
  }
  else
  {
    int.TryParse(numstr, out result);
  }
  return result;
}

答案 3 :(得分:0)

嘘,Rion Williams绝对正确,恕我直言。

除了您正在解析的内容不是整数之外,我个人使用TryParse方法。许多.NET类型都有它,而且它有点安全#34; (它不会抛出异常)而不仅仅是解析一个字符串。

示例:

string stringValue = "127.0";
int intValue;

if(Int32.TryParse(stringValue, out intValue))
{
    // return value
}

// handle the failure

如果你不喜欢这样,我会把它包裹起来试试......